ADO.net程序异常问题

程序异常问题

为什么要进行异常处理

程序因为各种原因出现问题导致的结果是程序直接崩溃,结果和开发过程出现的问题结果大不一样。因此需要使用异常的处理来防止软件系统崩溃

程序中的安全隐患

  1. 网络故障导致数据库连接问题
  2. 用户的非法操作(数据验证失败)
  3. 数据处理中的任何意外(例如:查询超时,资源文件丢失等)
  4. ……

了解异常类Exception

.NET Framework中的异常的设计结构
ADO.net程序异常问题

常见的异常类

与参数有关的异常

此类异常类均派生自SystemException,用于方法成员传递参数时发生的异常

  1. ArgumentException:用于处理参数无效的异常
  2. FormatException:用于处理参数格式错误的异常

与数组有关的异常

此类异常类均派生自SystemException

  1. IndexOutOfRangeException:用于处理索引超出数组长度所引发的异常
  2. ArrayTypeMismatchException:用于处理数组中存储数据类型不正确的元素所引发的异常

与IO有关的异常

  1. IOException:用于处理进行文件输入输出操作时所引发的异常

与内存溢出有关的异常

​ OverFlowException:用于处理程序逻辑错误造成的死循环异常

与算术有关的异常

​ ArithmeticException:用于处理与算术有关的异常,比如0作为除数

与数据库操作有关的异常

  1. DbException:用于处理所有数据源操作异常类的基类
  2. SqlException:用于处理针对SQL数据源的异常,比如数据库连接错误

处理异常的常用方法

异常处理的形式

  1. 即时处理:发现异常后随时处理并恢复程序
  2. 抛出异常:捕获异常后,重新封装异常信息或直接抛给调用者

编写异常处理的原则

在任何可能会发生异常的地方进行添加异常处理的方法

异常对象提供的重要信息

属性名称 说明
Source 此属性表示导致异常发生的应用程序或对象的名称
Message 提供引发异常的详细描述信息
StackTrace 提供在堆栈上所调用方法的详细信息,并首先显示最近调用的方法

使用Try-catch捕获和处理

  1. Try中放可能会出现异常的代码
  2. catch中表示如果try中的代码出现了异常则会直接进入到catch中执行
  3. 无论是否try中的代码会不会发生异常,最终都会执行finally中的代码
  4. finally不是必须的模块

异常传递与自定义方法

异常处理和日常工作一样

  1. “底层方法”将第一次捕获的异常传递给上级调用者进一步详细处理
  2. “中层调用者”可以用多路捕获异常并封装详细异常信息
  3. “顶层调用者”即在用户界面中继续处理异常

相当于:

顶层调用者是客户-出现异常只需要告诉客户可能操作未成功的人性化原因描述

中层调用者-程序的开发人员,在开发程序时对于可能发生的异常进行初步处理

底层方法-维护人员,将异常的详细信息汇报,并进行异常处理