关于C语言中的try语句

Python023

关于C语言中的try语句,第1张

C语言是没有try语句的,还有,你这个地方也就算是一个函数(在C语言里面你写的这个try只能是函数)

有语法错误,帮你改了,你自己再看看

#include<stdio.h>

void try(int,int,int)

int main()

{

int x=2,y=3,z=0 //y=3

printf("(1)x=%d y=%d z=%d\n",x,y,z)

try(x,y,z)

printf("(4)x=%d y=%d z=%d\n",x,y,z)

}

void try(int x,int y,int z)

{

printf("(2)x=%d y=%d z=%d\n",x,y,z)

z=x+y

x=x*x

y=y*y

printf("(3)x=%d y=%d z=%d\n",x,y,z)

}

一点补充:最开始我运行你这个程序是在一个.cpp文件里面写的代码,然后运行,但是程序会报错,为什么呢?因为cpp一般而言是C++的文件,C++里面有try语句,try是他的一个关键字,所以函数名不能是关键字,程序报错了。

但是在一个.c文件里面是没有问题的~~

还有,你这个真心是一个函数,不是try语句,try语句是

try

{

do something

}

catch(some error)

{

do something

}

C语言里try是一个语句或函数。其作用是是抛出错误用。

将有可能产生错误的语句括在一起,放入try语句块。如果在try语句块中发生异常,FlashPlayer会创建一个错误对象,并将该Error对象派发至第一个可用的catch块。catch语句块提供对错误的处理。如果没有try语句,或者try语句没有出现错误,则catch语句不会被引发。如果在try语句块的其中某个语句中检测到错误,则会执行附加到该try语句的catch语句。catch语句可以并列使用,即在一个try语句块之后,存在多个catch语句块,以处理不同的错误对象。

try语句是:

try

{

do something

}

catch(some error)

{

do something

}

Unix(包括Linux)下的C语言编程中是不会使用try catch的,的确C也没有这个语法。然而当运行时的错误异常被抛出时,系统会产生信号发送给进程,如果进程没有做信号响应函数的话,就会被中断运行并且产生core文件,通过core文件可以查看程序的崩溃原因、当时的调用堆栈、当时的变量值等等信息,当然这是另外一个话题。

因此在Unix下,与try catch起到相似作用的东西就是信号相应函数。相关的使用方法大体包括如下内容:

1、信号安装

signal()

sigaction()

2、发送信号函数

int raise(int sig)

int pause(void)

int kill(pid_t pid,int sig)

unsigned int alarm(unsigned int seconds)

int sigqueue(pid_t pid,int sig,const union sigval val)

int setitimer(int which,const struct itimerval *value,struct itimerval *oldvalue)

void abort(void)

3、信号集及信号集操作

sigfillset(sigset_t *set)

sigemptyset(sigset_t *set)

sigaddset(sigset_t *set,int sig)

sigdelset(sigset_t *set,int sig)

4、阻塞信号相关函数

int sigprocmask(int how,const sigset_t *set,sigset_t *set)

int sigpending(sigset_t *set)

int sigsuspend(const sigset_t *set)

具体使用方法可参考相应文档