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

本文详细解析了错误处理的两种主要方式——通过返回值和抛出异常,并对比了不同操作系统和编程语言(如Unix/Linux、Windows、C/C++、Java、C#)在错误处理上的特点和实践。此外,文章还强调了理解异常处理原理的重要性及其在函数调用和堆栈操作中的应用。最后,讨论了C语言中没有统一的异常处理机制及其在实际开发中的权衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()的工作原理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值