黑马程序员技术交流社区

标题: 来看一下这段代码 [打印本页]

作者: 呆呆呆    时间: 2013-12-3 23:51
标题: 来看一下这段代码
  1. public static void start() throws IOException, RuntimeException{

  2. 02

  3. 03 throw new RuntimeException("Not able to Start");

  4. 04 }

  5. 05

  6. 06 public static void main(String args[]) {

  7. 07 try {

  8. 08 start();

  9. 09 } catch (Exception ex) {

  10. 10 ex.printStackTrace();

  11. 11 } catch (RuntimeException re) {

  12. 12 re.printStackTrace();

  13. 13 }

  14. 14 }
复制代码

麻烦解决一下问题啊,编译错误。
作者: long362144768    时间: 2013-12-4 00:00
catch的顺序反了,RuntimeException re永远也无法执行,因为Exception是它的父类,
作者: Faner    时间: 2013-12-4 01:15
确实是cath的顺序反了  Exceptionahi所以异常的父类   理论上是可以处理任何异常的
作者: 汪洋大海    时间: 2013-12-4 01:23
Faner 发表于 2013-12-4 01:15
确实是cath的顺序反了  Exceptionahi所以异常的父类   理论上是可以处理任何异常的 ...

电风扇你好。
作者: Faner    时间: 2013-12-4 01:31
汪洋大海 发表于 2013-12-4 01:23
电风扇你好。

???????????:o
作者: 汪洋大海    时间: 2013-12-4 01:35
fanner不就是电风扇吗?

作者: Faner    时间: 2013-12-4 01:37
汪洋大海 发表于 2013-12-4 01:35
fanner不就是电风扇吗?

哥们   fanner 确实是电风扇 可是我是faner:@
作者: 汪洋大海    时间: 2013-12-4 02:05
Faner 发表于 2013-12-4 01:37
哥们   fanner 确实是电风扇 可是我是faner

我的qq是282067274你来加我吧。
作者: ❦_H_t    时间: 2013-12-4 09:38
Exception是父类异常
RuntimeException是子类异常
上边这句话肯定是错的。应该是先子类异常,然后父类异常。
如果反过来,那抛出异常都被父类异常捕获走了,而且在父类异常也判断不出具体是什么异常。
所以应该从子类异常开始捕获,如果子类异常都不能捕获,最后再到父类异常。
而且JAVA也在这方面做了处理了,如果前边的异常是父类异常,后边的是子类异常,那么代码编译就不会通过
作者: 王家胜    时间: 2013-12-4 13:31
本帖最后由 王家胜 于 2013-12-5 19:07 编辑

我只是提示这个最合理

作者: .Mr    时间: 2013-12-4 14:14
多catch父类的catch放在最下面。
正确的代码应该这样
public static void start() throws IOException, RuntimeException{

02

03 throw new RuntimeException("Not able to Start");

04 }

05

06 public static void main(String args[]) {

07 try {

08 start();

09 } catch (RuntimeException re) {

12 re.printStackTrace();

13 } catch (Exception ex) {

10 ex.printStackTrace();

11 }

14 }
作者: 简★零度    时间: 2013-12-5 22:55
下次问题解决了就把类型改成提问结束!谢谢!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2