龙空技术网

计算机编程语言错误处理万花筒(上)

江边聊编程 859

前言:

今天同学们对“c语言编程常见错误例题及解析”都比较关注,咱们都需要知道一些“c语言编程常见错误例题及解析”的相关知识。那么小编在网上搜集了一些关于“c语言编程常见错误例题及解析””的相关文章,希望咱们能喜欢,朋友们一起来了解一下吧!

软件开发中最头痛的就是各种错误处理,一不小心就Bug满天飞。因而错误处理对于软件的可用性与稳定性有着至关重要的作用。接下来,一起来探讨各种计算机语言是如何处理异常的。

汇编语言

汇编语言是通过中断向量表来管理所有的异常处理代码。每一个异常事件都在中断向量表中有一个编号(0到255)。每个中断号注册相应的中断处理函数来处理异常。并根据CPU重要性,分为不可屏蔽中断(Non maskable interrupt)和可屏蔽中断(Maskable interrupt)。

比较常见的异常有以下几种

算数运算除数为0 divl %eax, %eax -> EAX = 0

段地址错误 movl %ebx, (%eax) ->EAX非法虚拟地址

非法跳转 jmp $BAD_JMP

Win95提供了结构化错误处理机制(Structured Exception Handling)。这个就有点try/catch处理的影子了。可以通过下面的代码欣赏一下。

1. 汇编语言SEH错误处理示例

C语言错误处理

C语言主要是通过函数返回值检查来执行错误处理。这样有个缺点就是通常函数返回后有一大段繁琐的if/else处理逻辑代码块。并且这种代码写法也不方便进行链式编程。于是,很多库便提供了统一的全局函数来获取出错信息。下面一段代码来自OpenGl示例代码。

2. C语言库错误处理示例

这样的处理有些不够优雅美观,于是在Unix系统编程中,将中断处理扩展,引入了信号(signal)处理机制。并制定了POSIX signal规范。下面这段代码,通过fork创建父子进程以后,进程之间还能通过信号进行协同。

C++语言错误处理

C++语言直接引入了异常处理机制。通过try/catch语句来处理各种运行错误。这样,编写的代码比C语言更美观。不过,由于底层的异常可能会在最上层处理,实际项目调试时也会更加复杂。并且C++语言还要考虑对象的构造与析构,异常处理的机制也会更加复杂。实际项目开发时,经常为找不到异常发生的原因与时机而发愁。

4. C++编程常用错误处理示例

标签: #c语言编程常见错误例题及解析