Exception与RuntimeException的区别(异常的基本概念)
首先观察一下代码:
public classRuntimeExceptionDemo
{
public static void main(String args[])
{
String str1="21";//定义字符串
int temp=Integer.parseInt(str1);//将字符串变成INT型
System.out.println(temp*temp);//输出乘方
}
}
编译---运行后发现没有问题!其中用到了parseInt()方法。
parseInt()的定义格式:
由API文档可知:public static int parseInt(String s,
int radix)
throws NumberFormatException
在此方法中用了throws关键字抛出异常,可是不用捕获处理异常就编译成功了!通过查找可知如下关系
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.IllegalArgumentException
java.lang.NumberFormatException
其中
ExceptionRuntimeExceptionIllegalArgumentExceptionNumberFormatException为继承关系!但是我们抛出RuntimeExeption的子类lang.NumberFormatException没有需要执行try...catch,如果抛出的是Excption则需要执行try...catch;
我们得出结论:
在Java的异常处理机制中:
1.如果抛出的是Exception的类型,则必须使用try…catch进行处理!
2.如果抛出的是RuntimeException的类型,则不是必须使用try…catch处理,一旦发生异常之后将有JVM进行处理!但是为了保证代码的健康性,建议在可能有异常的地方使用try…catch进行处理!