c语言常用的异常处理,C语言中的异常处理

一 前言:

异常处理,对于做面向对象开发的开发者来说是再熟悉不过了,例如在C#中有

try

{

...

}

catch( Exception e){...}

finally{

.....

}

在C++中,我们常常会使用

try{}

...

catch(){}

块来进行异常处理。

说了那么多,那么到底什么是异常处理呢?

异常处理(又称为错误处理)功能提供了处理程序运行时出现的任何意外或异常情况的方法。

异常处理一般有两种模型,一种是"终止模型",一种是"恢复模型"

"终止模型":在这种模型中,将假设错误非常关键,将以致于程序无法返回到异常发生的地方继续执行.一旦异常被抛出,就表明错误已无法挽回,也不能回来继续执行.

"恢复模型":异常处理程序的工作是修正错误,然后重新尝试调动出问题的方法,并认为的二次能成功. 对于恢复模型,通常希望异常被处理之后能继续执行程序.在这种情况下,抛出异常更像是对方法的调用--可以在Java里用这种方法进行配置,以得到类似恢复的行为.(也就是说,不是抛出异常,而是调用方法修正错误.)或者,把try块放在while循环里,这样就可以不断的进入try块,直到得到满意的结果.

二 面向对象中的异常处理

大致了解了什么是异常处理后,由于异常处理在面向对象语言中使用的比较普遍,我们就先以C++为例,做一个关于异常处理的简单例子:

问题:求两个数相除的结果。

这里,隐藏这一个错误,那就是当除数为0时,会出现,所以,我们得使用异常处理来捕捉这个异常,并抛出异常信息。

具体看代码:

1 #include 

2 #include 

3 using namespace std;

4 class DivideError:public exception

5 {

6  public:

7           DivideError::DivideError():exception(){}

8          const char* what(){

9             return "试图去除一个值为0的数字";

10         }

11

12 };

13 double quotion(int numerator,int denominator)

14 {

15     if(0==denominator)          //当除数为0时,抛出异常16     throw DivideError();

17     return static_cast(numerator)/denominator;

18 }<

你可能感兴趣的:(c语言常用的异常处理)