版权声明:本文为博主原创文章,未经博主同意不得转载。https://blog.csdn.net/quwenzhe/article/details/35610853
java异常机制中主要包含一个图、五个keyword、异常捕获顺序、异常和重写的关系。以下分部具体解释:
一个图
借助这个图,我们须要知道Throwable是全部异常的祖宗类。Error:系统错误,处理不了的错误,Exception:能够处理的异常。Exception又分为RuntimeException和其他。RuntimeException:常常出的错误,能够catch。也能够不catch;其他是我们必须要处理的异常。
五个keyword
try、catch、finally、throw、throws
public class Test {public static void main(String[] args) {
Test t = new Test();
t.manager();
}public void regist(int num) throws MyException {
if (num < 0) {
throw new MyException("人数为负值,不合法", 3);
}
System.out.println("登记人数:" + num);
}public void manager() {
try {
regist(-1);
} catch (MyException e) {
System.out.println("登记失败,出错类型码=" + e.getId());
} finally {
System.out.println("c操作结束");
}
}
}
try是代码正常执行时的部分。catch是代码捕获到异常时执行的部分,finally是不管代码是否正常执行终于都会执行的部分。
在manager方法中调用了必须捕获异常的regist方法。
在调用时。能够採取上述try…catch的方式对异常进行处理。在catch中捕获到regist方法throw的new MyException异常。也能够用throws向manager方法的上一级继续抛异常,形式例如以下:
public void manager() throws MyException{
regist(-1);
System.out.println("c操作结束");
}
因为manager方法没有对异常进行处理,所以在main方法中调用manager方法时,要么用try…catch进行处理,要么向main方法的上一级继续抛异常。
先逮小的,再逮大的
比方在被调用的方法中。即存在IOException异常,又存在FileNotFoundException异常(继承于IOException异常)。我们应该先捕获FileNotFoundException异常再捕获IOException异常。
异常和重写的关系
重写须要抛出与原方法所抛出异常类型一致异常或不抛出异常。
假设A中的method方法抛出IOException异常。则继承A的B要么不抛出异常。要么也抛出IOException异常,演演示样例如以下:
class A{
public void method() throws IOException{}
}
重写方案一:
class B extends A{
pulic void method{}
}
重写方案二:
class B extends A{
public void method() throws IOException{}
}
第一遍看完马士兵老师。仅仅知道马老师讲的好,说不上哪好。如今看第二遍,对各个部分进行总结,深入了解马老师教学内容的精髓。
学习过程中,总结非常有必要!!
!