1、RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。
即:RunmtimeException及其子类不需要再函数上进行throws声明,而Excepion必须声明.
2、父类的方法抛出一个异常,而子类在覆盖父类的方法时,只能抛出父类的异常或其子类。如果父类没有抛出异常,
那么子类覆盖的时候不能抛出异常,只能处理异常(try catch)
class DivZeroException extends ArithmeticException//Exception
{
//private String msg;
private int num;
DivZeroException (String msg, int num)
{
//this.msg = msg;
super(msg);
this.num = num;
}
public int getNum()
{
return num;
}
//public String getMsg()
//{
// return msg;
//}
}
class DivTest
{
int div(int a, int b)// throws Exception
{
if (b == 0)
throw new DivZeroException("除数不能为0!", b); //抛出自定义异常实例
//throw new ArithmeticException();
int [] arr = new int[3];
System.out.println("arr[" + a + "]=" + arr[a]); //这里有异常被抛出,则不继续向后执行。
return a/b;
}
}
class ExceptionDemo
{
public static void main(String[] args) throws Exception
{
DivTest d = new DivTest();
try
{
int x = d.div(4,0);
System.out.println("x="+x);
}
catch (ArithmeticException e)//(DivZeroException e)//(Exception e)//JVM系统异常。
{
System.out.println(e.getMessage()); //e.getMsg()
//ystem.out.println("除数:" + e.getNum());
}
System.out.println("Hello world!");
}
}