知识大全 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事务处理和异常处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!使用SQLTrans
ASP.NET全局异常处理浅析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在我们写程序时偶尔
ASP.NET中的事务处理和异常处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 使用SQLTr
ASP.Net之C#中的异常处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 基础知识 程序
ASP.Net之C#中的异常处理[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
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.NET2.0中实现异常管理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在任何应用系统开
在ASP.NET2.0中实现异常管理[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 介绍