class Test
{
public int devide(int x,int y) throws DevideByMinusException,ArithmeticException //ArithmeticException为算术异常
//表示这个方法可能会产生异常,可以抛出多个异常,如果使用这个方法就一定要用try catch
{
if(y<0)
throw new DevideByMinusException("devisor is "+y); //此处为throw不是throws
return x/y;
}
//当被继承类的方法被重写时,如果这个方法抛出异常,则重写时也必须抛出异常,且应与父类方法抛出异常一致,或是它的子异常(子集)
class SubTest extends Test
{
public int devide(int x,int y) throws DevideByMinusException //或者是DevideByMinusException,ArithmeticException
{
return x/y;
}
}
class DevideByMinusException extends Exception //编写异常类DevideByMinusException(负除数异常)继承Exception类
{
public DevideByMinusException(String msg) //Exception类中有String message这个成员,被继承了
{
super(msg); //调用父类中的构造函数
}
}
class TestException
{
public static void main(String[] args)
{
try
{
new Test().devide(2,-1);
return;
} //可以catch多个异常
catch(ArithmeticException e)
{
System.out.println("program is running into ArithmeticException");
e.printStackTrace();
return;
}
catch(DevideByMinusException e)
{
System.out.println("program is running into DevideByMinusException");
e.printStackTrace();
return;
}
catch(Exception ex) //此异常应放在所有异常的后面,否则所有异常都会被它捕获
{
System.out.println(ex.getMessage());
}
finally //不管程序如何变化,finall中的语句都是要被执行的,如前面某个位置有return,如果有System.exit(0)语句,finally不执行
{
System.out.println("finally");
}
System.out.println("program keep going!");
}
}
{
public int devide(int x,int y) throws DevideByMinusException,ArithmeticException //ArithmeticException为算术异常
//表示这个方法可能会产生异常,可以抛出多个异常,如果使用这个方法就一定要用try catch
{
if(y<0)
throw new DevideByMinusException("devisor is "+y); //此处为throw不是throws
return x/y;
}
//当被继承类的方法被重写时,如果这个方法抛出异常,则重写时也必须抛出异常,且应与父类方法抛出异常一致,或是它的子异常(子集)
class SubTest extends Test
{
public int devide(int x,int y) throws DevideByMinusException //或者是DevideByMinusException,ArithmeticException
{
return x/y;
}
}
class DevideByMinusException extends Exception //编写异常类DevideByMinusException(负除数异常)继承Exception类
{
public DevideByMinusException(String msg) //Exception类中有String message这个成员,被继承了
{
super(msg); //调用父类中的构造函数
}
}
class TestException
{
public static void main(String[] args)
{
try
{
new Test().devide(2,-1);
return;
} //可以catch多个异常
catch(ArithmeticException e)
{
System.out.println("program is running into ArithmeticException");
e.printStackTrace();
return;
}
catch(DevideByMinusException e)
{
System.out.println("program is running into DevideByMinusException");
e.printStackTrace();
return;
}
catch(Exception ex) //此异常应放在所有异常的后面,否则所有异常都会被它捕获
{
System.out.println(ex.getMessage());
}
finally //不管程序如何变化,finall中的语句都是要被执行的,如前面某个位置有return,如果有System.exit(0)语句,finally不执行
{
System.out.println("finally");
}
System.out.println("program keep going!");
}
}