3种错误处理方法

来源:互联网 发布:仿百度贴吧php源码 编辑:程序博客网 时间:2024/06/07 15:16
3种错误处理 优缺点 返回值函数用返回值来告知调用者是否出错,比如很多Windows的API就是这个类型。其返回值为0表示API调用成功,返回值不为0表示API调用的过程中出错了。微软为不同非零返回值定义了不同意义,可以根据这些返回值判断出错的原因, 缺点:函数不能直接把计算结果通过返回值赋为其它变量,同时也不能把这个函数算法的结果直接作为参数传递为其它函数。 全局变量 当发生错误时设置一个全局变量,可以通过调用函数GetLastError分析这个表示错误的全局变量得知出错的原因。 优点:可把计算结果通过返回值赋为其它变量或作为参数传递为其它函数。缺点:调用者很容易忘记检查全局变量,因此在调用出错的时候忘记做相应的错误处理,从而留下安全隐患 异常 当函数运行出错的时候抛出一个异常,可以根据不同出错的原因定义不同的异常类型。 优点:1,根据异常的类型就能知道出错的原因2,显式划分程序正常运行的代码块(try模块)和处理异常的代码块(catch模块)缺点:当抛出异常时程序执行会打乱正常顺序,对性能有很大影响。

补充说明:

GetLastError

  • GetLastError返回的值通过在API函数中调用SetLastError或SetLastErrorEx设置。
  • 只有在函数调用返回一个错误结果时,这个函数指出的错误结果才是有效的。
  • 即使一次GetLastError调用返回的是零值,也不能担保函数已成功执行。
  • 通常,只有在函数返回一个错误结果,而且已知函数会设置GetLastError变量的前提下,才应访问GetLastError,这时能保证获得有效的结果。
  • SetLastError函数主要在对API函数进行模拟的dll函数中使用
  • GetLastError返回的是一个双字节数值(DWORD)。目前win32的出错编号0-11031,Windows(Windows95,以上,Windows NT 3.1以上)已经提供了现成的错误信息处理函数:FormatMessage()。
  • FormatMessage是一个Windows API函数。它的功能就是将GetLastError函数得到的错误信息(这个错误信息是数字代号)转化成字符串信息的函数
  • GetLastError的出错编号举例:
    (0)-操作成功完成。
    (1)-功能错误。
    (2)- 系统找不到指定的文件。
    (3)-系统找不到指定的路径。
    (4)-系统无法打开文件。
    (5)-拒绝访问。
    (6)-句柄无 效。
    (7)-存储控制块被损坏。
    (8)-存储空间不足,无法处理此命令。
    (9)-存储控制块地址无效。
    (10)-环境错 误。
    (11)-试图加载格式错误的程序。
    (12)-访问码无效。
    (13)-数据无效。
    (14)-存储器不足,无法完成此 操作。
    (15)-系统找不到指定的驱动器。
    (16)-无法删除目录。
    (17)-系统无法将文件移到不同的驱动器。
    (18)- 没有更多文件。
    (19)-介质受写入保护。
    (20)-系统找不到指定的设备。
    (21)-设备未就绪…..
1 0
原创粉丝点击