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://blog.peos.cn)
- /// </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://blog.peos.cn)
- throw ex;//默认异常
- }
- }
这样,我们只需要把我们的 throw new Excetion(ex) 改为 throw new ExceptioinManage(ex) 就可以抛出人性化的异常了!
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · C#自定义异常处理(一)
- · The instance of entity type ‘Customer’ cannot be tracked because another instance with the same key value for {‘Id’} is already being tracked.
- · .NET8实时更新nginx ip地址归属地
- · 解决.NET Blazor子组件不刷新问题
- · .NET8如何在普通类库中引用 Microsoft.AspNetCore
- · .NET8 Mysql SSL error
- · ASP.NET Core MVC的Razor视图渲染中文乱码的问题
- · .NETCORE 依赖注入服务生命周期
- · asp.net zero改mysql
- · .NET5面试汇总
- · .Net连接Mysql数据库的Convert Zero Datetime日期问题
- · vue使用element-ui中的Message 、MessageBox 、Notification