A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Nemo 中级黑马   /  2015-6-13 20:30  /  262 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.在继承中使用异常注意的地方:
父类方法中如果声明了异常A,B,那么子类如果复写该方法只能声明父类方法中声明的异常的子集,这里的子集不是说子类方法声明的异常必须少于父类方法,其实是可以多声明的,但这是有条件限制的,且是不推荐使用的。例如子类复写方法声明异常A,B还可以声明A,B的子类异常,但是这样就不符合我们catch异常的原则:声明几个,调用者catch几个。本质:如果以前有一个调用者使用了父类的方法,那么我们要保证他在不修改代码的情况下一样使用子类复写的方法。
2.RuntimeException:
运行时异常,更见名知意的叫法是:逻辑错误异常。这类异常的特点是抛出该异常时可以不处理的,即不抛,也不try。更合适的说法是应该不处理这类异常。因为这类异常的这个特点的目的就是为了使得该异常不由人来处理,而是交由jvm处理,也就是停止程序运行,因为通常这类异常都会使得程序无法正常确定有意义的运行下去。例如:我们有一个定时器类,有一个方法可以设置定时时间,如果我们传入一个负数,那么这时就应该引发RuntimeException,因为程序没办法运行了,一个负数对于这个程序来说是没有意义的,必须停止程序,修改代码来解决。
3.处理问题两种方式(使用异常,流程代码)
当某个语句有可能出现问题时,我们可以使用条件判断流程语句来解决,也就是if else等,但是这样一来会使得正常的流程代码和解决问题的代码混杂在一起,不方便程序的阅读和维护,同时也不符合面向对象的编程思想,也就是说对于问题的各种操作处理,应该是问题这个事物最清楚才对。因为更好的方法是将问题封装起来,也就是现在的异常体系,除了更符合面向对象编程思想外,更好的将不同功能的代码分离开来,更利于阅读和后期的维护。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马