Java基础学习之(11)--异常处理

一、异常的概念:

二、异常的分类:

所有的Error和Exception都继承自throwable类,throwable类是万恶之源。

Error类是系统的内部错误,即虚拟机出错;Exception类是我们可以处理的异常,可以被catch,Exception类主要分为两大类,RuntimeExcetion类和其他。RuntimeExcetion异常可以捕获,也可以不捕获,经常出现;另一类异常必须被捕获,处理了才能继续运行。

 举例1:可以不捕获的异常

void m(int i)  throw ArithmeticException {

if( i == 0)

  throw new ArithmeticException("被除数为0");

}

(1)不捕获异常的情况

TestEx te = new TestEx();

te.m(0);

(2)捕获异常的情况

try{   new TestEx().m(0);  }

catch( ArithmeticException ae ){

ae.printStackTrace();

System.out.println("出错了");

}

 举例2:必须捕获的异常

 in = new FileInputStream("myfile.txt");编译会报错:必须对其进行捕捉或声明以便抛出异常。

三、try_catch_finally关键字:

一个try可以跟着多个catch。如果一个方法后面跟了throw Excetion(例如read()throw IOException),则使用该方法的时候,必须使用try-catch对该方法可能出现的异常进行捕获。

 

 不管是否捕获到异常,finally关键字中的内容,必须被执行。例如下图例子1中语句2不再执行,但是finally中的内容被执行。

 

 

 四、声明的方法抛出的异常(throws)

当前方法若是对于异常无法处理,则可以向上级抛出该异常throws,让上级去处理该异常。

例如 void f() throws FileNotFoundException , IOException{}//虽然FileNotFoundException是IOException的子类,但是最好都写,分别进行处理

当catch到任何一种异常的时候,至少应该做出一种处理,打印出错误也行,不然异常会被吞噬掉。

 五、总结

一个图;五个关键字(throw try_catch_finally throws);

先逮小的异常,再逮大的异常(FileNotFoundException , IOException)

 重写的方法不能抛出与被重写的方法不同的异常.若是被重写方法没有抛出异常throws,则重写方法也不能抛出异常.

若try后面跟着多个catch,用于捕获不同的异常,但是不管是哪一种情况,最终只会输出其中之一。

博客引用马士兵Java基础教程中的PPT,如有侵权,请联系删除,谢谢!

原文地址:https://www.cnblogs.com/Harriett-Lin/p/12652277.html