异常
- 受检查异常
- 被检查的异常应该用try-catch块代码处理,或者在main方法中用throws关键字让JRE了解程序可能抛出哪些异常。
- Exception是所有被检查异常的基类
- 被检查的异常适用于那些不是因程序引起的错误情况,比如:读取文件时文件不存在引发的FileNotFoundException
- 不受检查异常
- 不受检查的异常在程序中不要求被处理或用throws语句告知。
- RuntimeException是所有不受检查异常的基类。
- 不被检查的异常通常都是由于糟糕的编程引起的,比如:在对象引用时没有确保对象非空而引起的NullPointerException
Java虚拟机用方法调用栈(method invocation stack)来跟踪每个线程中一系列的方法调用过程。如果在执行方法过程中抛出异常,则Java虚拟机必须找到能捕获该异常的catch代码块。当Java虚拟机追溯到调用栈的底部的方法的时候,如果仍然没有找到处理该异常的代码块,这样它就会按步骤处理,首先会打印方法调用栈的异常信息,然后如果所处的线程不是主线程,那么就会终止这个线程
public class TestReturn {
public int test(){
int x = 1;
try{
return ++x;
}
catch(Exception e){
}finally{
return ++x;
}
//return x;
}
public static void main(String[] args){
TestReturn t = new TestReturn();
int result = t.test();
System.out.println(result);//2
}
}
- 遇到return语句时会在局部变量区额外分配一块空间存储值,待代码执行完毕会直接返回这个值
- 如果finally中有return的话,会以finally中的return为准