知识大全 ASP.NET中异常处理使用

Posted 语句

篇首语:多见者博,多闻者智,拒谏者塞,专己者孤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET中异常处理使用相关的知识,希望对你有一定的参考价值。

ASP.NET中异常处理使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  通用语言运行时(CLR)具有的一个很大的优势为 异常处理是跨语言被标准化的 一个在C#中所引发的异常可以在Visual Basic客户中得到处理 不再有 HRESULTs  或者 ISupportErrorInfo 接口    尽管跨语言异常处理的覆蓋面很广 但这一章完全集中讨论C#异常处理 你稍为改变编译器的溢出处理行为 接着有趣的事情就开始了 你处理了该异常 要增加更多的手段 随后引发你所创建的异常  校验(checked)和非校验(unchecked)语句   当你执行运算时 有可能会发生计算结果超出结果变量数据类型的有效范围 这种情况被称为溢出 依据不同的编程语言 你将被以某种方式通知 或者根本就没有被通知 (C++程序员听起来熟悉吗?)    那么 C#如何处理溢出的呢? 要找出其默认行为 请看我在这本书前面提到的阶乘的例子 (为了方便其见 前面的例子再次在清单 中给出) 清单     计算一个数的阶乘 : using System; : : class Factorial : :  public static void Main(string&#; args) :   :   long nFactorial = ; :   long nComputeTo = Int Parse(args&# ;); : :   long nCurDig = ; :   for (nCurDig= ;nCurDig <= nComputeTo; nCurDig++) :    nFactorial *= nCurDig; : :   Console WriteLine( ! is nComputeTo nFactorial); :   :    当你象这样使用命令行执行程序时   factorial    结果为 什么也没有发生 因此 设想C#默默地处理溢出情况而不明确地警告你是安全的     通过给整个应用程序(经编译器开关)或于语句级允许溢出校验 你就可以改变这种行为 以下两节分别解决一种方案 给溢出校验设置编译器   如果你想给整个应用程序控制溢出校验 C#编译器设置选择是正是你所要找的 默认地 溢出校验是禁用的 要明确地要求它 运行以下编译器命令 csc factorial cs /checked+    现在当你用 参数执行应用程序时 CLR通知你溢出异常(见图 ) 图  允许了溢出异常 阶乘代码产生了一个异常   按OK键离开对话框揭示了异常信息 Exception occurred: System OverflowException at Factorial Main(System String&#;)   现在你了解了溢出条件引发了一个 System OverflowException异常 下一节 在我们完成语法校验之后 如何捕获并处理所出现的异常?  语法溢出校验  如果你不想给整个应用程序允许溢出校验 仅给某些代码段允许校验 你可能会很舒适 对于这种场合 你可能象清单 中显示的那样 使用校验语句 清单   阶乘计算中的溢出校验 : using System; : : class Factorial : :  public static void Main(string&#; args) :   :   long nFactorial = ; :   long nComputeTo = Int Parse(args&# ;); : :   long nCurDig = ; : :   for (nCurDig= ;nCurDig <= nComputeTo; nCurDig++) :    checked nFactorial *= nCurDig; : :   Console WriteLine( ! is nComputeTo nFactorial); :   :   甚至就如你运用标志 checked 编译了该代码 在第 行中 溢出校验仍然会对乘法实现检查 错误信息保持一致   显示相反行为的语句是非校验(unchecked ) 甚至如果允许了溢出校验(给编译器加上checked+标志) 被unchecked 语句所括住的代码也将不会引发溢出异常 uncheckednFactorial *= nCurDig;      异常处理语句  既然你知道了如何产生一个异常(你会发现更多的方法 相信我) 仍然存在如何处理它的问题 如果你是一个 C++ WIN 程序员 肯定熟悉SEH(结构异常处理) 你将从中找到安慰 C#中的命令几乎是相同的 而且它们也以相似的方式运作 The following three sections introduce C# s exception handling statements: 以下三节介绍了C#的异常处理语句 用 try catch 捕获异常 用try finally 清除异常 用try catch finally 处理所有的异常  使用 try 和 catch捕获异常  你肯定会对一件事非常感兴趣 不要提示给用户那令人讨厌的异常消息 以便你的应用程序继续执行 要这样 你必须捕获(处理)该异常    这样使用的语句是try 和 catch try包含可能会产生异常的语句 而catch处理一个异常 如果有异常存在的话 清单 用try 和 catch为OverflowException 实现异常处理   清单  捕获由Factorial Calculation引发的OverflowException 异常 : using System; : : class Factorial : :  public static void Main(string&#; args) :   :   long nFactorial = nCurDig= ; :   long nComputeTo = Int Parse(args&# ;); : :   try :   :    checked :     :     for (;nCurDig <= nComputeTo; nCurDig++) : nFactorial *= nCurDig; :     :   :   catch (OverflowException oe) :   :    Console WriteLine( Computing caused an overflow exception nComputeTo); :    return; :   : :   Console WriteLine( ! is nComputeTo nFactorial); :   :    为了说明清楚 我扩展了某些代码段 而且我也保证异常是由checked 语句产生的 甚至当你忘记了编译器设置时    正如你所见 异常处理并不麻烦 你所有要做的是 在try语句中包含容易产生异常的代码 接着捕获异常 该异常在这个例子中是OverflowException类型 无论一个异常什么时候被引发 在catch段里的代码会注意进行适当的处理    如果你不事先知道哪一种异常会被预期 而仍然想处于安全状态 简单地忽略异常的类型 try catch    但是 通过这个途径 你不能获得对异常对象的访问 而该对象含有重要的出错信息 一般化异常处理代码象这样 try catch(System Exception e)    注意 你不能用ref或out 修饰符传递 e 对象给一个方法 也不能赋给它一个不同的值  使用 try 和 finally 清除异常   如果你更关心清除而不是错误处理 try 和 finally 会获得你的喜欢 它不仅抑制了出错消息 而且所有包含在 finally 块中的代码在异常被引发后仍然会被执行    尽管程序不正常终止 但你还可以为用户获取一条消息 如清单 所示    清单  在finally 语句中处理异常 : using System; : : class Factorial : :  public static void Main(string&#; args) :   :   long nFactorial = nCurDig= ; :   long nComputeTo = Int Parse(args&# ;); :   bool bAllFine = false; : :   try :   :    checked :     :     for (;nCurDig <= nComputeTo; nCurDig++) : nFactorial *= nCurDig; :     :    bAllFine = true; :   :   finally :   :    if (!bAllFine) :     Console WriteLine( Computing caused an overflow exception nComputeTo); :    else :     Console WriteLine( ! is nComputeTo nFactorial); :   :   :

cha138/Article/program/net/201311/13484

相关参考

知识大全 ASP.NET事务处理和异常处理

ASP.NET事务处理和异常处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!使用SQLTrans

知识大全 ASP.NET全局异常处理浅析

ASP.NET全局异常处理浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在我们写程序时偶尔

知识大全 ASP.NET中的事务处理和异常处理

ASP.NET中的事务处理和异常处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 使用SQLTr

知识大全 ASP.Net之C#中的异常处理

ASP.Net之C#中的异常处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  基础知识  程序

知识大全 ASP.Net之C#中的异常处理[2]

ASP.Net之C#中的异常处理[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 ASP.Net之C#中的异常处理[1]

ASP.Net之C#中的异常处理[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 ASP.NET生成eurl.axd Http异常错误处理

ASP.NET生成eurl.axdHttp异常错误处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 ASP.NET入门教程 1.3.9 错误和异常处理

ASP.NET入门教程1.3.9错误和异常处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 在ASP.NET 2.0中实现异常管理

在ASP.NET2.0中实现异常管理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在任何应用系统开

知识大全 在ASP.NET 2.0中实现异常管理[1]

在ASP.NET2.0中实现异常管理[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  介绍