c#自定义异常处理
在另一篇文章里,我说了.NET异常处理机制中的自定义异常处理,今天我要说的是另外一种异常处理。
在写处理程序异常的过程中,可能会遇到各种不同类型的异常,而已要抛出不同的人性化提示,如果统一抛出一样的提示,就不人性化了,
我们一般的处理方法 是:
- public void Update()
- {
- try
- { }
- catch(SqlExcetion ex)
- {
- throw new excetion(ex);
- }
- catch(IOExcetion ex)
- {
- throw new excetion(ex);
- }
- //其它异常…
- catch (Exception ex)
- {
- throw new Exceptioin(ex);
- }
- }
或者采用异常嵌套(异常里嵌套异常,这里就不上代码 了)
但是这种方法有一个问题,如果有多个地方要这样处理,那我们真的成了代码工人了。所以,用一个类来管理它吧。
在这里我们叫它,异常处理类。
- /// <summary>
- /// 全局异常处理类
- ///作者:数据库之家(http://www.uol123.com)
- /// </summary>
- [Serializable]
- public class ExceptioinManage :Exception
- {
- /// <summary>
- /// 默认构造函数
- /// </summary>
- public ExceptioinManage() { }
- public ExceptioinManage(string message)
- : base(message)
- {
- throw new Exception(message);
- }
- public ExceptioinManage(string message, Exception inner)
- : base(message, inner) { }
- public ExceptioinManage(System.Runtime.Serialization.SerializationInfo info,
- System.Runtime.Serialization.StreamingContext context)
- : base(info, context) { }
- public ExceptioinManage(Exception ex)
- {
- if (ex.GetType() == typeof(System.Data.SqlClient.SqlException))
- {
- //日志
- throw new Exception(“连接已断开,请检查网络的联通性!”);
- }
-
if (ex.GetType() == typeof(System.IO.IOExcetion)) { //日志 throw new Exception("无法读取文件!"); }
//其它异常
- //日志(http://www.uol123.com)
- throw ex;//默认异常
- }
- }
这样,我们只需要把我们的 throw new Excetion(ex) 改为 throw new ExceptioinManage(ex) 就可以抛出人性化的异常了!
固定链接: c#自定义异常处理(二) | 数据库之家 +复制链接