Exception捕获和使用(01)

java Exception 深入:




geyMassage():返回该异常的详细的字符串
printStackTrace() 将异常的跟踪栈信息输出打破
printStackTrace(PrintStream s )将该异常的跟踪信息输出到指定的输出流
getStackTrace()返回异常跟踪栈的异常信息
 
使用finally回收资源
数据库连接,网络连接,擦盘文件这些物理资源都要被现实的回收
java中垃圾回收机制不会回收物力资源的垃圾回收机制只能回收堆内存中对象占的资源。只有在使用try块以后才可以使用catch或者是finally用来回收资源多个catch块必须位于捕获子类异常的后面但是不能只有try块既没有catch又没有finally 这样的话会出现异常
如果在try/catch中使用可return;这样强制的方法结束的话但是一定会优先执行finally中的语句表名方法返回之前还是执行了finally块的代码但是如果在catch中使用了System.exit(1);
那么将不会执行finally语句 而是直接退出代码finally将不会得到执行
一旦在finally中使用 return或者是throw语句将会导致try块和catch块的return语句被覆盖所以尽量不要使用
java程序执行try和catch块中遇到return或者是throw将会立即导致该方法结束但是系统执行这两个语句不会立即结束而是寻找finally看看程序中时候还有finally如果有的话那么立即执行finally中的语句
************************************************************ 异常处理的嵌套使用
正如我们所见到的那样finally中可以嵌套使用try和catch这样的模式被称作异常处理的嵌套异常处理流程代码可以放在任何能方可执行性代码的地方,因此完整的异常处理流程既可以放在try或者catch或者是finally中而且深度没有限制


**************************************************************重点来了**
java7中的自动关闭自语昂的try语句:
我们都知道在finally中实现对资源的回收是很臃肿的 那么在java1.7中增强了try的功能 允许在try关键字后紧跟一对圆括号圆括号可以声明初始化一个或者多个资源,这里指的资源是必须在程序结束的时候被显示的关闭的try语句在结束的时候就会自己主动的关闭这些
重点是这些资源实现类必须实现了AutoCloseAble或者是Closeable
实现这两个必须要实现close方法
实现类实现了Closeable在实现close时候只声明了抛出IOException异常或者其子类
但是实现了AutoClosable类的时候close会抛出Exception异常这样的话如果是实现AutoCloseable接口则可以抛出任意的异常


public static void main(String [] args)throws IOException{
try(
BufferReader br  = new BufferReader(new FileReader("in.java"));
PrintStream ps = new PrintStream(new FileOutputStream ("out.java")))
{
System.out.Println(br.readline());
ps.println("aaaaaaaa");


}
}
自动关闭资源的try语句相当于隐式的使用了finally代码块这样的话这个try语句就是没有catch语句或是finally语句
在java7中对几乎所有的资源类都进行了改写都实现了AutoCloseAble
或者是Closable接口如果需要的话那么也可以写上catch或者finally
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值