博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#自定义异常处理
阅读量:5998 次
发布时间:2019-06-20

本文共 1390 字,大约阅读时间需要 4 分钟。

在另一篇文章里,我说了.NET异常处理机制中的自定义异常处理,今天我要说的是另外一种异常处理。

在写处理程序异常的过程中,可能会遇到各种不同类型的异常,而已要抛出不同的人性化提示,如果统一抛出一样的提示,就不人性化了,

我们一般的处理方法 是:

  1. public void Update()
  2. {
  3.        try
  4.        {
       }
  5.        catch(SqlExcetion ex)
  6.        {
  7.               throw new excetion(ex);
  8.         }
  9.         catch(IOExcetion ex)
  10.          {
  11.                   throw new excetion(ex);
  12.           }
  13.           //其它异常…
  14.           catch (Exception ex)
  15.             {
  16.                 throw new Exceptioin(ex);
  17.             }
  18. }
 
 
 
 
 
           或者采用异常嵌套(异常里嵌套异常,这里就不上代码 了)
 
但是这种方法有一个问题,如果有多个地方要这样处理,那我们真的成了代码工人了。所以,用一个类来管理它吧。
在这里我们叫它,异常处理类。
  1.   /// <summary>
  2.     /// 全局异常处理类
  3.  ///作者:数据库之家()
  4.     /// </summary>
  5.     [Serializable]
  6.     public class ExceptioinManage :Exception
  7.     {
  8.         /// <summary>
  9.         /// 默认构造函数
  10.         /// </summary> 
  11.         public ExceptioinManage() {
     }
  12.  
  13.         public ExceptioinManage(string message)
  14.             : base(message) 
  15.         {
  16.             throw new Exception(message);
  17.         }
  18.  
  19.         public ExceptioinManage(string message, Exception inner)
  20.             : base(message, inner) {
     }
  21.  
  22.         public ExceptioinManage(System.Runtime.Serialization.SerializationInfo info,
  23.             System.Runtime.Serialization.StreamingContext context)
  24.             : base(info, context) {
     }
  25.  
  26.         public ExceptioinManage(Exception ex)         
  27.         {
  28.             if (ex.GetType() == typeof(System.Data.SqlClient.SqlException))
  29.             {
  30.                 //日志
  31.                 throw new Exception(“连接已断开,请检查网络的联通性!”);
  32.             }
  33. if (ex.GetType() == typeof(System.IO.IOExcetion))      {            //日志           throw new Exception("无法读取文件!");      }
    //其它异常
  34.             //日志()
  35.             throw ex;//默认异常
  36.         }
  37.     }
这样,我们只需要把我们的   throw new Excetion(ex)   改为  throw new ExceptioinManage(ex) 就可以抛出人性化的异常了!
 

转载于:https://www.cnblogs.com/longle/archive/2011/11/30/2269100.html

你可能感兴趣的文章
ABAP开发人员未来应该学些什么
查看>>
想要阅读一些开源项目或框架的源代码,不知道从哪里入手?
查看>>
CRM和C4C product category hierarchy的可编辑性控制逻辑
查看>>
如何在SAP C4C里使用ABSL消费第三方Restful API
查看>>
什么样的经历,才能领悟成为架构师?
查看>>
数据库——数据库的管理
查看>>
EOS官方钱包keosd
查看>>
Vue入坑——vue-router别名alias
查看>>
接口优于反射机制(53)
查看>>
给出以下代码,请给出结果.
查看>>
CSS学习笔记
查看>>
Dubbo深入学习了解
查看>>
在阿里架构师眼中构建一个较为通用的业务技术架构就是如此简单
查看>>
看图了解RocksDB
查看>>
HCNR200二三事
查看>>
LNMP环境介绍
查看>>
php动态扩展模块安装
查看>>
在小程序上开商城应如何吸引流量
查看>>
人工智能的春天来了!Tesra超算网络,助力AI开发!
查看>>
python项目实战:调用百度API智能识别汽车型号
查看>>