java异常总结

来源:互联网 发布:江西先锋软件集团 编辑:程序博客网 时间:2024/06/03 17:03

总结:一图,5关键字,先逮小后逮大,异常和重写的关系,throw和throws的区别,自定义异常,常用的异常。

注意观察错误的名字和行号。

一图:

5关键字:try  catch   finally   throw throws   printStackTrace   getMessage。

先逮小后逮大:不可以调换顺序,就像已经用大网捞鱼后,再用小网捞不着。

异常和重写的关系:重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常。

throw和throws的区别:throws抛异常最简单的写法:throws Exception。最终处理需写try catch。

   参考:http://www.cnblogs.com/xiohao/p/3547443.html

自定义异常:1、继承Exception:必须逮异常。继承RunTimeException:不是必须逮。2、对 if 语句的影响:一旦抛出异常,后面的语句不会执行,方法结束。

          步骤:1、通过继承java.lang.Exception类声明自己的异常类。
                     2、在方法适当的位置生成自定义异常的实例,并用throw 语句抛出。
                     3、在方法的声明部分用throws语句声明该方法可能抛出的异常。

常用的异常:FileNotFoundException / IOException / Arithmetic / 

注意:处理不了,向外抛。
catch里面一定要做处理,否则异常就被吞了。


?可以将涉及方法全部打印。

经验:
1、处理运行时异常,,采用逻辑去合理规避同时辅助try-catch处理。
2、在多重catch后面,可以加一个catch(Exception)来处理可能会被遗漏的异常。
3、对不确定的代买,可以加上try-catch。
4、尽量处理异常,切记只调用printStackTrace()去打印输出。
5、具体如何处理异常,要根据不同业务需求和异常类型去决定。
6、尽量添加finally语句块去释放占用的资源。


代码示例:

import java.io.*;public class Test3 {//年龄不能为负public void regist(int age) throws MyException {if(age < 0) {throw new MyException("年龄为负不合理. ",1);}System.out.println("年龄是:" + age);}//管理存入的年龄是否正确public void manage() {try {regist(-100);}catch (MyException m) {System.out.println("错误信息" + m.getId());m.printStackTrace();}System.out.println("over.");}public static void main(String[] args) {//IOException. FileNotFoundException .Exception.//try {}catch(){}catch(){}finally//printStrackTrace.getMessageFileInputStream in = null;try {in = new FileInputStream("myfile.txt");int b ;b = in.read();while(b != -1) {System.out.print((char)b);b = in.read();}}catch (FileNotFoundException f) {System.out.println(f.getMessage());}catch (IOException e) {System.out.println(e.getMessage());}finally {try {in.close();}catch (IOException e){//注意:这里不可以使用FileNotFoundException。//否则显示:未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出  e.printStackTrace();}}System.out.println();//测试 MyExceptionTest3 t3 = new Test3();t3.manage();}}//myException,Exception//有错误信息,错误类型。class MyException extends Exception {private int id;private String message;public MyException(String message,int id) {this.message = message;this.id = id;}public int getId() {return id;}public String getMessage() {return message;}}

结果:

123456.5987
错误信息1
MyException: 年龄为负不合理.
        at Test3.regist(Test3.java:8)
        at Test3.manage(Test3.java:16)
        at Test3.main(Test3.java:56)
over.


0 0
原创粉丝点击