您的位置:首页 > 其它

异常类

2015-08-02 21:27 176 查看

How

XXMethod()throws Child1Exception,Child2ExCeption//除了RuntimeExceptiong及其子类,均要throws异常
{
try
{
//抛出Child1Exception对象
new throw Child1Exception();
new throw Child2Exception();
}
catch (Child1Exception e)//捕获抛出的异常对象并处理
{
e.printStackTrace();
...
}
catch (Child2ExCeption e)
{
e.printStackTrace();
...
}
...
finally
{
要释放的资源
或一定要执行的代码
}
}


自定义异常实例

/**
*自定义两个异常:除数为负数异常,除数为零异常
*throws 异常类1,异常类2 ,写在函数后面,表示这个函数可能有问题
*throw new 异常1(..) ,写在函数里面,抛出异常1对象,将供给catch
*catch(异常1 e){}将捕获抛出的异常1的对象,赋给e,然后再操作e
*当throw执行时,其后的语句将不会执行,与return类似
*RuntimeException及其子类是特殊的异常类,可以直接抛出起对象,意义在于发生异常时终止程序,提示须改程序
*finally:主要用于释放资源!如操作数据库异常,不做finally处理,数据库连接将不会断开,占用资源
*注意1:子类继承父类,那么子类抛出的异常只能是父类异常的子类对象或则子集
*注意2:父类或接口没有定义的异常对象,子类只能try不能抛
*/
class FuShuException extends Exception
{
FuShuException(){
super();
}
//声明负数异常的构造方法,调用父类的构造方法
FuShuException(String msg){
super(msg);
}
}
class ZeroException extends Exception
{

//声明负数异常的构造方法,调用父类的构造方法
ZeroException(String msg){
super(msg);
}
}
class Test
{
public double count(int a,int b)throws FuShuException,ZeroException
{
//RuntimeException可直接抛出,而并没有throws,也没有catch,其子类如NullPointerException,ArithmeticException等
if(a<0) throw new RuntimeException("被除数a<0");
else if(b<0) throw new FuShuException("负数异常: by / 负数");
else if(b==0) throw new ZeroException("除数零异常:by / 0");
return a/b;
}
}
class YiChang
{
public static void main(String[] args)
{
try{
Test t=new Test();

System.out.println(t.count(5,-1));

}
catch(FuShuException e){
e.printStackTrace();//异常对象:错误信息+错误代码行数
//System.out.println(e.toString());//异常对象:错误信息
//下面这一句可以测试出finally的作用
//return;
}
catch(ZeroException e){
e.printStackTrace();//异常对象:错误信息+错误代码行数
//System.out.println(e.toString());//异常对象:错误信息
}
finally{
System.out.println("over");//finally里面写一定会执行的语句(除非调用System.exit(0)退出jvm虚拟机)
}
//注意,这里与finally不同的是,如果异常执行并停止程序的时候,下面的语句不执行,而finally中的会执行
System.out.println("over2");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: