异常(Exception)
所有异常都是继承于Throwable的一个实例。
异常:
所有异常直接或间接继承Exception类
分类:
UncheckedException:运行时异常(Runtime Exception):写完程序后编译不会报错,所以你可以处理,也可以不处理。所有的运行时异常都直接或间接的继承RuntimeException类。
Checked Exception:非运行时异常(非 Runtime Exception):写完程序后编译会报错,必须对其做处理。处理一:try…..catch….finally。处理二:在调用该会产生异常的的方法处声明:throws Exception.
异常处理结构:
try{
出现异常的语句;
}
catch(Exception e)
{
捕获出现的异常;
}
finally{
总是会执行此代码块,可以省略;
}
1、重写的方法不能抛出与被重写的方法不同的异常。
2、Catch语句块中异常的父类不能放在最前面。子类应该放在最前面。
例如:catch(Exception e){
}catch(IOException e){
}错误,因为父类Exception 已经捕获,所以IOException会报错。
我们应该这样写:
catch(IOException e){
}catch(Exception e){
}
3、一般不在底层代码处理异常:因为编写代码写程序是服务于人们,出现异常应该与界面相关,方便用户更好运用软件。
4、自定义异常:例如我们程序定义一个整形的变量age,我们知道生活中年龄的值不可能为400,而java中异常中也没有年龄超出范围异常,这时候需要我们自己定义一个异常。
例如:自定义AgeBoundException
public class AgeBoundException extends Exception {
publicAgeBoundException(String msg){
super(msg);
}
}