关于两种错误处理方式(返回值,异常)的浅显认识

来源:互联网 发布:cpuz怎么看显卡知乎 编辑:程序博客网 时间:2024/05/21 13:23

1. 错误处理的两种方式:(1)利用返回值;(2)堆栈操纵(抛出异常)。

 

2. Unix和Linux系统API以及标准C库函数都是采用返回值的方式;而WindowsAPI一部分采用返回值,一部分可以让调用者传递一个标记来决定以何种方式指明错误,如HeapAlloc()。

 

3.Java和C#已经实现了一整套的异常处理机制和异常类,并且其类库也大都使用异常处理的方式,所以使用这两种语言编程不建议再使用返回值的错误处理方式,而是鼓励统一使用异常;

 

4. C++为了和C兼容,其库函数的错误处理方式没有统一,既有返回值,也有异常;并且它也没有一套规范的异常类,建议开发者自己衡量选择错误处理方式。

 

5.C语言本身没有现成易用的异常处理机制,并且标准库函数都是采用返回值的方式。如果用WindowsAPI开发C程序,那么可以选择Windows的SEH,但问题是SEH是Windows专用的,在其他OS上行不通。如果在非Windows系统下做C程序,也有一些用宏实现了的异常处理库可以使用。但是毕竟C没有规定异常处理标准,所以要想让程序可移植和让大部分人能看懂,最好还是使用传统的返回值方式。

 

6.无论开发过程中使用异常与否,理解异常处理本身的实现原理对于理解函数调用和堆栈操纵原理这些基本的重要的知识都是非常有好处的。典型的是C库中setjmp()和longjmp()的工作原理。