try
{
//获取并使用资源,可能出现异常
}
catch(DivideByZeroException de)
{
}
catch(ArithmeticException ae)
{
}
catch(Exception e)
{
//捕获并处理异常,当出现多个异常且异常类之间有继承关系(DivideByZeroException==>ArithmeticException==>Exception),
//捕获顺序是子类在前,基类在后
}
finally
{
//无论什么情况(即使在catch块中return)下,都会执行该块的代码(如:关闭文件)
//另外需要说明的是,在finally块中使用任何break、continue、return退出都是非法的。
}

除了以上的try-catch-finally的处理方式外,还有三种方式来捕获异常:

1. 页面级错误处理(通过Page_Error事件)

//在页面上进行处理

protected void Page_Error(object sender, EventArgs e)
{
string errorMsg = String.Empty;
Exception currentError = Server.GetLastError();
errorMsg += "系统发生错误:<br/>";
errorMsg += "错误地址:" + Request.Url + "<br/>";
errorMsg += "错误信息:" + currentError.Message + "<br/>";
Response.Write(errorMsg);
Server.ClearError();//清除异常(否则将引发全局的Application_Error事件)
}

2. 应用程序级(global.asax)错误处理(通过Application_Error事件)

//在应用程序进行处理

protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
Exception iex = ex.InnerException;
string errorMsg = String.Empty;
string particular = String.Empty;
if (iex != null)
{
errorMsg = iex.Message;
particular = iex.StackTrace;
}
else
{
errorMsg = ex.Message;
particular = ex.StackTrace;
}
//AddLog(errorMsg, particular);
Server.ClearError();//处理完及时清理异常
}

3. 应用程序配置(web.config)

//总体配置

<system.web>    
<!--mode有三种值:On,Off,RemoteOnly,defaultRedirect出现错误重定向的URL-->
<customErrors mode="On" defaultRedirect="ErrorPage.htm">
<!--statusCode错误状态码,redirect错误重定向的URL-->
<error statusCode="403" redirect="NoAccess.htm"/>
<error statusCode="404" redirect="FileNoFound.htm"/>
</customErrors>
</system.web>

1我们随着调用栈的深入,性能开销也越大,所以异常应该尽早抛出。

2.对输入的数据应该在业务逻辑中严格检查。

3.try{}catch{}不会造成任何的系统开销,造成系统开销的是throw 抛出异常

ASP.NET异常处理机制的更多相关文章

  1. ASP.NET Core 中间件的使用(三):全局异常处理机制

    前言 我们经常听到"秒修复秒上线",觉得很厉害的样子. 其实不然,这只是一个调侃而已,出现问题的方式很多(逻辑漏洞.代码异常.操作方式不正确等). 我们今天来说代码异常问题怎么快速 ...

  2. ASP.NET(C#)中的try catch异常处理机制

    在开发一个Umbraco平台系统的过程中,遇到了问题. 写的代码如下 fileUrl = MediaHelper.GetMediaUrl(Convert.ToInt32(publishedConten ...

  3. ASP.Net请求处理机制初步探索之旅 - Part 1 前奏

    开篇:ASP.Net是一项动态网页开发技术,在历史发展的长河中WebForm曾一时成为了ASP.Net的代名词,而ASP.Net MVC的出现让这项技术更加唤发朝气.但是,不管是ASP.Net Web ...

  4. ASP.Net请求处理机制初步探索之旅 - Part 2 核心

    开篇:上一篇我们了解了一个请求从客户端发出到服务端接收并转到ASP.Net处理入口的过程,这篇我们开始探索ASP.Net的核心处理部分,借助强大的反编译工具,我们会看到几个熟悉又陌生的名词(类):Ht ...

  5. ASP.Net请求处理机制初步探索之旅 - Part 3 管道

    开篇:上一篇我们了解了一个ASP.Net页面请求的核心处理入口,它经历了三个重要的入口,分别是:ISAPIRuntime.ProcessRequest().HttpRuntime.ProcessReq ...

  6. Java异常处理机制 try-catch-finally 剖析

    Java拥有着强大的异常处理机制,最近初步学习了下,感觉内容还是挺多的,特此来将自己的理解写出来与大家分享. 一. 在Java代码code中,由于使用Myeclipse IDE,可以自动提醒用户哪里有 ...

  7. JAVA 异常处理机制

    主要讲述几点: 一.异常的简介 二.异常处理流程 三.运行时异常和非运行时异常 四.throws和throw关键字 一.异常简介 异常处理是在程序运行之中出现的情况,例如除数为零.异常类(Except ...

  8. 深入理解java异常处理机制

       异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的 ...

  9. C++学习笔记27:异常处理机制

    一.异常处理机制基础 异常的定义 程序中可以检测的运行不正常的情况 异常处理的基本流程 某段程序代码在执行操作时发生特殊情况,引发一个特定的异常 另一段程序代码捕获该异常并处理它 二.异常的引发 th ...

随机推荐

  1. sys.argv向脚本中传递参数

    可以向脚本中传递无限多个参数,其值是一个列表,默认sys.argv[0]内容是脚本文件路径加文件名 test.py文件中的内容如下: #! /usr/bin/python3import sys pri ...

  2. Kotlin——最详细的环境搭建

    众所周知,Kotlin出来已经有一段时间了.Kotlin有着众多优势,不管是用于Android开发中,还是Java开发,都能缩减很大的代码量,大大提高了工作效率.而小生本人也是才从忙碌的个工作中抽身出 ...

  3. C GOTO使用示例

    GOTO虽然会破坏程序的结构,使用代码可读性变差,但是GOTO依然还是有可用的地方 #include <stdio.h>#include <stdbool.h> int mai ...

  4. 【Spring】构建Spring Web应用

    前言 学习了Spring的注解.AOP后,接着学习Spring Web,对于Web应用开发,Spring提供了Web框架. Web应用 Spring MVC初探 MVC为(Model-View-Con ...

  5. 兼容性问题--HTML+CSS

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } span.Apple-tab-span ...

  6. 在C#中winform程序中应用nlog日志工具

    在C#中winform程序中应用nlog日志工具,配置文件简单应用. 文件名 nlog.config,请注意修改属性为"始终复制",发布时候容易遇到不存在文件的错误提示. 通过Nu ...

  7. mybatis xml中使用where 条件中的in方法

    <select id="queryCount" resultType="cn.bnsr.edu_yun.view.FileView"> SELECT ...

  8. MySQL分区表与合并表

    一.分区表 1. 什么是分区表? 对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成(所以索引也是按照分区的子表定义的, 而没有全局索引).实现分区的代码实际上是对一组底层表的句柄对象的 ...

  9. LeetCode 665. Non-decreasing Array (不递减数组)

    Given an array with n integers, your task is to check if it could become non-decreasing by modifying ...

  10. Ajax中与服务器的通信【发送请求与处理响应】

    一.发送请求 Ajax中通过XMLHttpRequest对象发送异步方式的后台请求时.通常有两种方式的请求,一种是GET请求,另一种是POST请求.发送请求一般要经过4个步骤分别是: (1)初始化XM ...