![](https://i-blog.csdnimg.cn/blog_migrate/8b3db0ed1f10b5435dd500a53b4f3ab3.png)
1)Throwable,Exception,当在java程序中,手动抛出时,需要进行捕捉
2)Error,RunTimeException,当在java程序中,手动抛出时,是不需要进行捕捉的
![](https://i-blog.csdnimg.cn/blog_migrate/d6a897ead0fb50883d42129fe0d69260.png)
(3)Throwable,Error是unChecked的异常,不强制捕获,但是如果要捕捉,还是可以捕获的
![](https://i-blog.csdnimg.cn/blog_migrate/98e65b9f25fcaad260ddde13166b1809.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/dceba55c5dae1ee6c6b80b9c1f3698b6.png)
源码:
public class TestThrows {
static void throwRuntimeException(){
throw new RuntimeException("RuntimeException");
}
static void throwError(){
throw new Error("Error");
}
/*static void throwException(){
throw new Exception("Exception");
}
static void throwThrowable(){
throw new Throwable("Throwable");
}*/
public static void main(String[] args) {
System.out.println("before throwError");//before throwError
try {
throwError();
} catch (Error e) {
// TODO Auto-generated catch block
}
System.out.println("after throwError");//after throwError
System.out.println("before throwRuntimeException");//before throwRuntimeException
try {
throwRuntimeException();
} catch (RuntimeException e) {
// TODO Auto-generated catch block
}
System.out.println("after throwRuntimeException");//after throwRuntimeException
}
}