麓谷官网欢迎你访问长沙北大青鸟麓谷校区,支持你成为一个受人尊重的专业人才!
当前位置: 首页 > 青鸟知识 > net

.net中用异常处理机制处理程序中的意外情况

来源:长沙北大青鸟|发布时间:2017-04-05|浏览量:

学IT,好工作

就读长沙岳麓职业培训学校

求学热线: 400-160-2868

  在.net异常处理机制中,一般有三种选择:重新抛出相同的异常,调用栈高一层的代码通知该异常的发生;抛出一个不同的异常,想调用栈高一层代码提供更丰富的异常信息;让线程从catch块的底部退出。

  如果程序代码抛出一个异常,应用程序的另一端可能要捕捉这个异常,要注意的是不能写成一个“大小通吃”的异常快,应该允许在调用栈县向上移让应用程序代码不会就此离开。

  在系统开发过程中,BUG和异常产生是无处不在的,但是需要我们去做的就是不断去发掘异常、修改异常。

  系统中解决异常的几种方法:

  1.控制台程序产生的异常;

  在大多数的控制台程序中,运用最多的就是

  try{

  Action(); 捕捉异常

  }

  catch(Exption e){

  }

  但是需要注意的就是在控制台运行中产生的线程和一些特殊异常try捕捉不到,就只有需要使用特定的方法进行捕捉和处理

  AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

  Application.ThreadException += new ThreadExceptionEventHandler(ErrorHandlerForm.Form1_UIThreadException)

  2.web产生异常;

  现在的web系统,分为webFrom和MVC。

  webFrom也可以2种方式捕捉异常,一种采用上述的

  try{

  Action(); 捕捉异常

  }

  catch(Exption e){

  }

  第二种就是重写全局方法进行捕捉进行处理

  public class Global : System.Web.HttpApplication

  {

  //处理

  public void Application_Error(object sender, EventArgs e)

  {

  }

  }

  MVC处理的方式就是更加多样,不但可以用上述2种进行处理

  还可以重写父类控制器方法捕捉异常进行处理

  protected virtual void OnException(ExceptionContext filterContext);

  还有就是MVC最新的IOC思想,添加一个Filter进行异常捕捉进行处理

  public class ExceptionHandleFilter : ExceptionFilterAttribute

  {

  ///

  /// 系统发生异常时执行

  ///

  ///

  public override void OnException(HttpActionExecutedContext actionExecutedContext)

  {

  Action() //处理异常

  }

  }

  //运用

  [ExceptionHandleFilter]

  public class ServiceForAppController : BaseApiController

  {

  }

  3.接口异常;

  接口的处理方式同web处理方式类似,但是需要注意的就是在提供接口的时候最好能够添加一个回调机制,便于反馈解决调用端是否出现调用出现的异常。

  4.守护系统如何监控其他系统的异常;

  1.这种异常主要运用于守护程序中使用,就是A程序监控B/C程序的运行情况,这种也有2种方式进行处理

  第一种方法(推荐)

  采用应用程序之间的通信通道进行.B/C生成出异常,就直接交于中间的队列进行处理,然后消费者从队列中取出数据进行后续处理,比如

  RabbitMQ

  MSMQ

  第二种方法

  调用windos系统自带的WIND32接口获取程序运行的句柄指针,判断其运行状态进行后续处理。

  上述方法只是个人在工作中运用比较多的一些捕捉机制,然后搭配现在比较成熟的日志组件进行处理,更加方便高效。

  Log4

  NLog

  以上在对异常的介绍中,主要介绍了CLR的异常处理机制,一些较为通用的异常代码,以及对Exception类的介绍。在实际的项目中,我们一般不要将异常直接抛出给客户,我们在编写程序时,已经考虑程序的容错性,在程序捕获到异常后,尽量去恢复程序,或者将异常信息写入日志,让程序进入错误页。如果出现比较严重的异常,最后将异常抛出,终止程序。

上一篇:ASP.NET mvc4中的过滤器使用方法(附详细代码)

下一篇:ASP.NET Core跨平台开发:Kestrel服务器

扫码关注微信公众号了解更多详情

跟技术大咖,专业导师一起交流学习

姓名
电话
Q Q

在线留言

请您把问题留下,我们为您提供专业化的解答!

QQ咨询
  1. 招生问答
  2. 热门点击
  3. 最新更新
  4. 推荐文章

关于我们

学校成就

就业保障

联系方式

联系电话:400-160-2868

在线报名

预约报名

备案号:湘ICP备2020021619号-1
地址:湖南省长沙市高新区麓谷麓松路679号 版权所有:长沙市岳麓职业培训学校

在线咨询
课程咨询 学费咨询 学费分期 入学测试 免费预约 来校路线
初中生 高中生 待业者
400-160-2868

在线客服