java异常,就是java虚拟机发现程序执行得有问题。Java官方整理了很多常见的异常类型,设计成不同名称的类,比如RuntimeException类,当异常出现时,相应的对象会被JVM创建,如果没有被处理,会返回方法调用者,例如main方法的调用者JVM,如果没有处理完成,JVM将程序中断。
Java将Object类继承下来为一个Throwable类,之后又分出两类:Error、Exception。Error是无法通过代码来避免的错误,例如超出内存容量。Exception又分为受检异常和非受检异常,非受检异常指运行时异常。
非受检异常代码上不会标记为错误,可以通过编译,可能会因为传入数据的原因,使程序运行时无法执行,例如传入一个除数0。
受检异常,代码上会标记为错误,必须修改代码,或者代码中用try catch处理,或者用throw抛出。
try{
//可能产生异常的代码
}catch(异常类型 e){
//处理
}finally{
//无论是否异常都会执行,只要在异常处理之前程序不发生中断
}
异常发生后,catch中有return表示程序完成,finally中的语句还会执行。return发生后,内存中会将返回值储存起来,等待返回,执行完finally中的语句后,将之前的值返回出去。
如果return的是变量值,则finally中改变变量值不起作用,返回的是之前储存的值;如果return的是对象的属性,因为内存中暂存的只是对象的地址,所以如果在finally中改变对象的属性,会改变返回结果。
在声明方法时使用,对于异常不做处理而是交给调用者。例如:
public void method() throws Exception{
}
人为抛出一个异常使程序中断。例如,在代码中加入
throw new Exception(‘错误‘);
class MyException extends Exception{ // 继承Exception,也可以继承Exception的子类RuntimeException
public MyException(String msg){
super(msg) ; // 定义自定义异常类的构造方法,从父类Exception的一参构造方法调用。
}
};
原文:https://www.cnblogs.com/huaxiaobaichuan/p/14584729.html