异常

来源:互联网 发布:java前端和后端的区别 编辑:程序博客网 时间:2024/05/01 04:01

1.什么是异常

异常通常指,代码可能在编译时没有错误,可运行时会出现异常。也可能是程序出现无法预料的异常。java中大量的异常类都继承自java.lang.Throwable类

Throwable类的继承体系:

 

2.Throwable的子类有Exception(异常)和Error(错误),异常分为编译时异常和运行时异常                       

  RuntimeException: NullPointerException(空指针异常),ClassNotFoundException(指定类不存在),ArrayIndexOutOfBoundsException(数组下标越界),

IndexOutOfBoundsException(索引越界),ArithmeticException(算术异常)

3.异常的处理机制—异常捕获try…catch和finally

try{

 //程序代码块

}catch(ExceptionType(Exception类及其子类) e){

 //处理

}

一个try可对应多个catch,小的在前,大的在后,Exception是所有异常的子类,最后写。单独的try...finally也可以

finally代码块:无论是否发生异常都要执行,一般用于释放系统资源

4.throws关键字声明抛出异常,写在方法声明的后面,异常抛给了方法调用者。如果父类有多个异常抛出,则子类覆盖的方法中不能抛出新的异常。main函数抛出

异常是抛给Java运行环境。如果程序发生异常没有处理,程序将非正常终止。              

如果每个方法都是简单的抛出异常,那么在方法调用方法的多层嵌套调用中,Java虚拟机会从出现异常的方法代码块中往回找,直到找到处理该异常的代码块为

止。然后将异常交给相应的catch语句处理。如果Java虚拟机追溯到方法调用栈最底部main()方法时,如果仍然没有找到处理异常的代码块,将按照下面的步骤处

理:

第一、调用异常的对象的printStackTrace()方法,打印方法调用栈的异常信息。

 第二、如果出现异常的线程为主线程,则整个程序运行终止;如果非主线程,则终止该线程,其他线程继续运行。

5.编译时异常:Java编译器会对其进行检查,如果出现异常就必须处理,否则编译不能通过

处理方式:(1)使用try…catch语句对异常进行捕获

        (2)使用throws声明抛出异常,调用者对其处理

6.运行时异常:Java编译器不会对其进行检查,可以通过编译。一般由程序中的逻辑错误引起

7.自定义异常:用户自己定义的,必须继承自Exception或其子类

创建Exception或者RuntimeException的子类即可得到一个自定义的异常类

 public class MyException extends Exception{

 public MyException(){}

 public MyException(String smg){

  super(smg);

  }

 }

        
0 0
原创粉丝点击