1.RuntimeExcepton异常会被Java虚拟机自动抛出,不需要异常说明
例如下面的代码
定义一个RuntimeException 异常
public class MyException extends RuntimeException {
public MyException() {
}
}
进行异常抛出 但是不需要进行异常说明
public class TestException {
public void f(int i) {
if (i == 0) {
MyException myEx = new MyException();
// myEx.initCause(new RuntimeException());
throw myEx;
}
else {
System.out.println(i);
}
}
}
什么样子是进行异常说明了 请看下面的代码
public class TestException {
public void f(int i) throws MyException {
if (i == 0) {
MyException myEx = new MyException();
// myEx.initCause(new RuntimeException());
throw myEx;
}
else {
System.out.println(i);
}
}
}
对比就会发现 第二种 多了throws MyException 几个单词
2. RuntimeExcepton 异常会被自动捕获 不需要进行手动捕获 所以也被称为”不受检查异常“
请看下面的代码
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
TestException test = new TestException();
test.f(0);
}
}
如果不是RuntimeExcepton 异常 你需要手动捕获异常 手动捕获异常 是什么样子的啊
就是使用try catch 语句
例如下面的代码
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
TestException test = new TestException();
try {
test.f(0);
}
catch (MyException e) {
e.printStackTrace();
}
}
}
对比之后 发现区别在于 是否是用try catch 语句