异常类
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"); } }
相关文章推荐
- Binary Tree Maximum Path Sum
- (转)最小生成树
- angularJS--多个控制器之间的数据共享
- Android OpenGL ES2.0之光照的学习总结
- MAP基本操作函数
- 请高手指点,PHP问题,解密出一个文件,不知道这个是什么用的,怎么使用,谢谢好友指点
- 《MFC游戏开发》笔记八 游戏特效的实现(二):粒子系统
- 《MFC游戏开发》笔记九 游戏中的碰撞判定初步&怪物运动简单AI
- 面试准备---排序算法--冒泡排序
- Eclipse快捷键大全(转载)
- iOS:KVO的概述与使用
- 程序员最应去的网站有哪些?
- 浅析PageRank算法
- hdu5323 给出左右边界,求出线段树最小的大小(暴力dfs搜索)
- Material Design之Material Menu侧滑菜单
- 洗牌算法
- hdu 3338 Kakuro Extension(最大流)
- 生命在于运动
- 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动
- [转载] java web开发一个帐号同一时间只能一个人登录