Exception和RuntimeException的区别

观察以下代码

1 public class TestRuntimeException {
2     @Test
3     public void test(){
4         String str = "123"; //全部由数字组成
5         int i = Integer.parseInt(str);
6         System.out.println(i*i);
7     }
8 }

由文档知parseInt()的定义格式为:

public static int parseInt(String s)

                    throws NumberFormatException

我们可以看到在此方法中明明使用了throws抛出异常,但我们在调用时为什么不用处理就可以编译通过呢?

我们可以看到NumberFormatException继承之RuntimeException,其实在Java的异常处理机制中:

  • 如果抛出的是Exception异常,则必须使用try...catch处理;
  • 如果抛出的是RuntimeException异常,则不是必须要使用try...catch处理,一旦发生异常则直接交由JVM处理。但是为了程序的健康,建议在可能出现异常的地方使用try...catch处理。

 

 

 

posted @ 2018-01-14 16:18  weller  阅读(216)  评论(0编辑  收藏  举报