所有的异常都要使用try catch 语句捕获?
2014-11-03 22:42
281 查看
在开发应用程序过程中必须检测代码可能发生的错误并进行正确的处理,这个在理想的情况下,应用程序中的每行代码都按照预想的执行,要用到的每种资源总是可以利用,但是在实际的开发过程中,写代码难免会出错,或是网络中断、数据服务停止运行都会是应用程序出现异常。
.NET框架提供了一种结构化的异常处理机制,用于处理代码出现的各种错误,就是trycatch.
来个小例子。
这样看来是简化多了,处理了异常,也节约了资源,一举两得。
.NET框架提供了一种结构化的异常处理机制,用于处理代码出现的各种错误,就是trycatch.
来个小例子。
objectobj; DateTimedt; try { obj=newobject(); dt=(DateTime)obj; } catch(InvalidCastExceptione)//无效类型转换的异常 { Console.WriteLine(e.Message); } catch(InvalidOperationExceptione)//无效操作异常 { Console.WriteLine(e.Message); } catch//其他的异常 { Console.WriteLine("程序运行出错!"); } finally//必须执行的代码块 { dt=Convert.ToDateTime("1900-01-01"); Console.WriteLine(dt.ToString()); }
上述的例子中,将object类型转换为DateTime类型时,就会引发类型的无效转换异常。 .NET中使用的结构化异常处理的原则是所有可能出错的地方都要加上结构化异常处理代码,因为这样能够保证在错误发生时,正确的释放所有的资源,但是,不能盲目的使用它,不是每一句代码都要加上trycatch。因为异常是一种耗费资源的机制,每次抛出异常时,异常的堆栈都会建立,异常的信息也会被加载,这样给程序带来一些负担。所以,能加则加,不能加的决不盲目的加。 上述的代码可以简化为用is或者是as代替。
objectobj; DateTimedt; obj=newobject(); if(objisDateTime) { dt=(DateTime)obj; } else { Console.WriteLine("类型转换无效!"); }
这样看来是简化多了,处理了异常,也节约了资源,一举两得。
相关文章推荐
- .“在JAVA中,异常子类必须在它们任何父类之前使用,因为运用父类的catch语句将捕获该类型及其所有子类类型的异常。这样,后面运行子类的catch语句将永远不会到达。而且,Java中不能到达的代码是一个错误。”
- 在swift中使用try catch 捕获异常
- 异常捕获try catch的使用
- 解析Java中未被捕获的异常以及try语句的嵌套使用
- 使用try catch 捕获Soap 异常
- SQL2005存储过程中使用try catch捕获异常
- C#使用OleDb连接Excel数据源编写查询语句捕获到“无法识别的关键字when”的异常
- 关于使用多个 catch 语句捕获多个异常问题
- 使用两个不同类型的数据进行加法计算时,使用异常处理语句捕获由于数据类型错误而出现的异常,发生生成错误。是否继续并运行上次的成功生成?
- 1.使用try catch 捕获除0异常,并打印信息“不能除0”. * 2.将字符串“12.5” 转换为float类型 * 3.将int类型的127转换成 byte和short类型
- JavaSE8基础 try...catch...catch 使用众多异常的父类 Exception,去捕获 其所有子类异常
- 使用try catch抛出和捕获异常
- Swift 读取本地json文件时的异常捕获(try catch)的使用
- SQL2005存储过程中使用try catch捕获异常
- PRB:在 SQL Server 中使用 COMPUTE BY 子句时出现“COMPUTE BY Statements Not Supported”(不支持 COMPUTE BY 语句)异常
- 一条语句返回一个数据库中所有表的空间使用情况
- 在try catch中使用Response.End()抛"线程被中止"异常
- 使用SQL语句清空数据库所有表的数据
- 使用SQL语句清空数据库所有表的数据(转)
- 使用主线程异常捕获错误