Java 关于异常处理(3)

异常处理可加强程序的健壮性,方法中定义了抛出异常则强制程序员在调用方法时处理异常。
一个方法被覆盖时,覆盖它的方法需抛出相同的异常或异常的子类(亦可以没有异常)。
如果父类抛出多个异常,则覆盖方法必须扔出那些异常的的一个子集,不能抛出新的异常
package exception;
class Test{                                                    
public int devide(int x,int y) throws  ArithmeticException,Exception{ 
if(y<0) throw new DevideByMinusException("devide is"+y);
return x/y;
}
}
class ExTest extends Test{
public int devide(int x,int y)  throws  ArithmeticException{   //覆写的方法不能抛出新的异常

}
}
//自定义异常
class DevideByMinusException extends Exception{
DevideByMinusException(String msn){
super(msn);
}
}
public class TestException {

public static void main(String[] args) /*throws Exception*/{
//TODO Auto-generated method stub
try{
new Test().devide(3, -1);   //除数为-1,则Test中抛出 DevideByMinusException异常,被try-catch捕获

}catch(ArithmeticException e){
System.out.println("ArithmeticException Happen");
e.printStackTrace();   //直接将异常状况信息打印
}    //捕获算术异常
catch(DevideByMinusException e){
System.out.println("DevideByMinusException Happen");
e.printStackTrace();   
}   //捕获自定义的异常
catch(Exception e){
System.out.println(e.getMessage());
System.exit(0);   //程序退出,finally不会被执行
}       //只能放在最后,放在前面的话后面的就不会被执行
finally{

} //不管try是否发生错误,finally都要执行,如果try中有return之类的返回语句,则下面的不会被执行,但finally总是会被执行的,除非上面有System.exit(0)则程序则不会被执行
System.out.println("Programme is running");
}

}

//用try-catch来实行语句跳转
void fun(){
try{
if(x==0) throw new XException("XXX");
else throw new YException("YYY");
}
catch(XException e){

}
catch(YException e){

}
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpwfx.html