异常和断言的区别

2141人阅读 评论(2) 收藏 举报

异常被捕获后可以不作处理,程序从捕获位置继续执行。而断言是完全无法忽略的,程序在断言失败处立即终止。因此断言通常用于调试版本,用来发现程序中的逻辑错误。虽然异常也能起到这样的作用,但是不应该用异常代替断言:
1) 如果发现了逻辑错误,必须修改程序,而不可能在程序中进行处理和恢复,所以不需要向外传送,没有必要使用异常。
2) 使用断言的开销比异常小得多,而且断言可以从发布版中完全去除。
 

异常用于处理正确程序中的运行期问题(比如内存分配失败,窗口创建失败,线程创建失败,打开文件失败),以尽可能恢复,而不是终止程序。对于运行异常,使用断言是非常不合适的,理由很显然:
1) 断言在发布版不起作用;
2) 断言的处理方式不够友好;
3) 运行异常不是程序错误,没有必要报告源代码出错位置;


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    关注我谢谢。

    欢迎扫描关注我的公众号。


    公众号二维码
    个人资料
    • 访问:1110701次
    • 积分:12458
    • 等级:
    • 排名:第1120名
    • 原创:184篇
    • 转载:22篇
    • 译文:18篇
    • 评论:451条
    博客专栏
    最新评论