java_异常

异常的继承体系
   
异常体系:
    Throwable
        |--Error
        |--Exception
            |--RuntimeException
 
 
1.异常的注意事项:
    在子父类覆盖时:
    1,子类抛出的异常必须是父类的异常的子类或者子集
    2,如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try不能抛
 
2.异常输出的相关方法和输出信息
System.out.println(e.getMessage());// / by zero;
  System.out.println(e.toString());// 异常名称 : 异常信息。
 
  e.printStackTrace();//异常名称,异常信息,异常出现的位置。
  //其实jvm默认的异常处理机制,就是在调用printStackTrace方法。
  //打印异常的堆栈的跟踪信息。
 
3.finally语句的执行
     finally语句在任何情况下都必须执行的代码,这样可以保证一些在任何情况下都必须执行代码的可靠性。
     比如,在数据库查询异常的时候,应该释放JDBC连接等等。finally语句先于return语句执行,而不论其先后位置,也不管是否try块出现异常。
     finally语句唯一不被执行的情况是方法执行了System.exit()方法。System.exit()的作用是终止当前正在运行的 Java 虚拟机。
     finally语句块中不能通过给变量赋新值来改变return的返回值,也建议不要在finally块中使用return语句,没有意义还容易导致错误。
 
4.异常的区分
Exception类可以分为两种:运行时异常和受检查异常。
1、运行时异常
RuntimeException类及其子类都被称为运行时异常,这种异常的特点是Java编译器不去检查它,
     也就是说,当程序中可能出现这类异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过。例如,当除数为零时,就会抛出java.lang.ArithmeticException异常。
 
之所以不用在函数上声明,是因为不需要让调用者处理,当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望程序停止后由程序员对代码进行修正
 
2、受检查异常
除了RuntimeException类及其子类外,其他的Exception类及其子类都属于受检查异常,这种异常的特点是要么用try...catch捕获处理,要么用throws语句声明抛出,否则编译不会通过。
3、两者的区别
运行时异常表示无法让程序恢复运行的异常,导致这种异常的原因通常是由于执行了错误的操作。一旦出现错误,建议让程序终止。
受检查异常表示程序可以处理的异常。如果抛出异常的方法本身不处理或者不能处理它,那么方法的调用者就必须去处理该异常,否则调用会出错,连编译也无法通过。当然,这两种异常都是可以通过程序来捕获并处理的。
 
5.Java异常处理的原则和技巧
1、避免过大的try块,不要把不会出现异常的代码放到try块里面,尽量保持一个try块对应一个或多个异常。
2、细化异常的类型,不要不管什么类型的异常都写成Excetpion。
3、catch块尽量保持一个块捕获一类异常,不要忽略捕获的异常,捕获到后要么处理,要么转译,要么重新抛出新类型的异常。
4、不要把自己能处理的异常抛给别人。
5、不要用try...catch参与控制程序流程,异常控制的根本目的是处理程序的非正常情况。
 
6.异常常用的一些方法
     

 

 

     
     
 
7.列举一些常见的异常
     编译期异常:(在写代码时,eclipse会报错的问题)
          NoSuchMethodException:找不到此方法,
          ClassNotFoundException :找不到此类
     运行时异常:(在运行时出现的异常, 会中断程序,往往是因为代码的健壮性不足引起的)
          NullPointerException     空指针异常
          ArithmeticException     除零异常
          ClassCastExcepiton      类型转换异常
          IllegalArgumentException      不合法的参数异常,不正确的参数异常
          InputMismatchException      输入参数格式错误异常,常见于Scanner的输入中
          IndexOutOfBoundsException     下标越界异常
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2017-08-28 13:45  赵安之  阅读(130)  评论(0编辑  收藏  举报