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 }
3.2"中层调用者"可以使用多路捕获异常并封装详细异常信息
添加具体异常对象,通过判断错误号决定异常的类型。
1.多路捕获异常不是必须的,只有需要的时候才使用。
2.可以添加多个catch块。
3.一定要把Exception类放在最后。
ex.Number的使用,throw new Exception("********"+ex.Message);
throw ex;这种未经包装
throw new Exception("******"+ex.Message);这种稍微包装了一下
异常一般刚在业务逻辑里面,不需要放在界面里面,这样界面捕获后就直接显示。