异常体系

要明确异常继承体系,用表格来表示,这样理解的更快

Java.lang.Throwable
  java.lang.Throwable.Error       java.lang.Throwable.Exception

执行异常(RuntimeException)检查异常(CheckedException)
Error是什么意思呢?
这个很好理解,就是错误的意思,一般指与虚拟机相关JVM相关(如系统崩溃、虚拟机错误、动态链接失败),这种错误无法恢复或者不可捕获,后果是导致应用程序中断。
Exception就是异常了,通常来说就是你能够捕获到的异常。

这个异常又分两大类(RuntimeException)(CheckedException)。

所有的CheckedException异常都是可以被处理(修复)的异常,所以Java程序必须显式处理。

这就是我们常见的处理异常方式

Checked处理方式有如下两种:

1当前方法明确知道如何处理该异常,程序应该使用try...catch块来捕获该异常,格式就是

try{

代码块

}

catch(异常名)

{

代码处理块(简单来说就是处理try里面的代码块或者打印异常信息)

}

finally

{

使用finally回收资源

}

catch块进行说明:在Java7中新增的catch中可以使用多异常捕获,之间用|表示.访问异常信息也有常用的方法:

getMessage():返回该异常的详细描述字符串。

printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。

printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定输出流。

getStackTrace():返回该异常的跟踪栈信息。

finally块进行说明显示回收,这个地方一定会执行。这里要讲一下,回收的可是物理资源,就是数据库连接、网络连接和磁盘文件等,这些资源都必须显示回收。

重点:这有经常会跟垃圾回收机制做个比较。垃圾回收机制是收堆内存中对象所占用的内存。而栈是Java自己释放掉为该变量所占用的内存空间。

2当前方法不知道如何处理这种异常,应该在定义该方法时声明抛出异常。


Runtime处理方式就比较灵活了,无序显示抛出异常,如果要捕获异常,也可以使用try...catch块来实现。


throws声明抛出异常,如果该异常不知道如何处理,那就向上级抛出,如果到了main这一级也不知道如何抛出的话,也可以用throws声明。main申请之后,只会把该异常抛给VM来处理,JVM处理方法就是,打印异常栈信息,并终止程序运行,这个时候的结果就是异常自动结束。总结一下方法用throws进行声明,跟catch类是,可以抛出多个异常多个异常可以用。



如果你程序有业务要求,你当然也可以自已抛出异常,我们往往通过throw来抛出异常。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值