C++ try catch finally的例子
时间: 2023-11-26 10:39:22 浏览: 163
当使用 C 语言时,你通常不会使用 try-catch-finally 结构,因为 C 不提供本地异常处理机制。而是使用 setjmp() 和 longjmp() 函数来模拟异常处理。下面是一个使用 setjmp() 和 longjmp() 函数模拟 try-catch-finally 结构的示例:
```c
#include <stdio.h>
#include <setjmp.h>
jmp_buf buf;
void finally() {
printf("finally\n");
}
void divide(int num1, int num2) {
int result;
if(num2 == 0)
longjmp(buf, 1);
result = num1 / num2;
printf("Result: %d\n", result);
}
int main() {
int num1, num2;
if(setjmp(buf) == 0) {
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
divide(num1, num2);
}
else {
printf("Error: Division by zero!\n");
}
finally();
return 0;
}
```
在这个示例中,我们使用了 setjmp() 函数来设置一个跳转点(在主函数的开头),然后在 divide() 函数中,如果出现除以零的错误,我们就通过调用 longjmp() 函数来跳转回跳转点,并带上一个值作为错误码。在跳转点处,我们检查错误码来确定出现了何种错误。在 try-catch-finally 结构中,“finally” 块是无论如何都会执行的代码块。在这个示例中,我们通过调用 finally() 函数来模拟这段代码。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.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)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.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://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)