C++ try catch finally的例子
时间: 2023-11-26 09:39:22 浏览: 29
当使用 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() 函数来模拟这段代码。