c语言的try catch怎么用
时间: 2023-07-12 22:34:13 浏览: 117
在C语言中,没有原生的try-catch语法,但可以通过使用setjmp和longjmp函数来实现类似于异常处理的功能。具体步骤如下:
1. 在可能会发生异常的代码块之前,使用setjmp函数设置一个跳转点,将其返回值保存在一个jmp_buf类型的变量中。
2. 在代码块中,如果发生异常,使用longjmp函数跳转到setjmp函数所设置的跳转点,同时传入一个非零的值标识异常类型。
3. 在代码块之后,使用if语句判断jmp_buf变量的值,如果为非零,表示发生了异常,则进行相应的处理逻辑。
下面是一个简单的示例:
```c
#include <stdio.h>
#include <setjmp.h>
jmp_buf jmpbuf;
void func(int n) {
printf("func called with argument %d\n", n);
if (n == 0) {
longjmp(jmpbuf, 1);
} else {
printf("func finished successfully\n");
}
}
int main() {
if (setjmp(jmpbuf) == 0) {
func(1);
func(0);
func(2);
} else {
printf("exception occurred\n");
}
return 0;
}
```
在上面的示例中,setjmp函数设置了一个跳转点jmpbuf,并将其返回值保存在一个变量中。在func函数中,如果传入的参数n为0,则使用longjmp函数跳转到setjmp所设置的跳转点,并传入一个非零的值1表示发生了异常。在main函数中,调用func三次,第二次传入的参数为0,发生了异常。此时,setjmp函数的返回值为非零,if语句判断为真,输出"exception occurred"。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)