开发C/S架构

1.异常

  

2.常用的异常

  2.1与参数有关的异常类:派生自SystemException,用于方法成员传递参数时发生异常

    ArgumentException类:用于处理参数无效的异常。ArgumentNullException类:参数为空。

    FormatException类:用于处理参数格式错误的异常。

  2.2与数组有关的异常:继承自SystemException

    IndexOutOfException类:用于处理下标超出了数组长度所引发的异常。

    ArrayTypeMismatchException类:用于处理在数组中存储了数据类型不正确的元素所引发的异常。

  2.3与IO有关的异常:继承自SystemException

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

  2.4内存溢出有关的异常

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

  2.5与算术有关的异常

    ArithmeticException类:用于处理与算术有关的异常,比如0做除数。DivideByZeroException类。

  2.6数据库操作异常类

    DbException类:用于处理所有数据源操作异常类的基类。

    SqlException类:用于处理针对sql数据源的异常,比如数据库链接错误。

3.异常处理

  3.1“底层方法”将第一次捕获的异常传递给上级调用者进一步详细处理

 1 public static int Update(string sql)
 2 {
 3   SqlConnection conn = new SqlConnection(connString);
 4   SqlCommand cmd= new SqlCommand(sql,conn);
 5   try
 6   {
 7     conn.Open();
 8     return cmd.ExecuteNonQuery();
 9   }       
10   catch(Exception ex)
11   {
12     //此处可以添加日志
13     throw ex;
14   }
15   finally
16   {
17     conn.Close();
18   }
19 }    
try catch throw finally

  3.2"中层调用者"可以使用多路捕获异常并封装详细异常信息

  添加具体异常对象,通过判断错误号决定异常的类型。

    1.多路捕获异常不是必须的,只有需要的时候才使用。

    2.可以添加多个catch块。

    3.一定要把Exception类放在最后。

    ex.Number的使用,throw new Exception("********"+ex.Message);

    throw ex;这种未经包装

    throw new Exception("******"+ex.Message);这种稍微包装了一下

    异常一般刚在业务逻辑里面,不需要放在界面里面,这样界面捕获后就直接显示。

  

猜你喜欢

转载自www.cnblogs.com/yangmengke2018/p/10881613.html