java改错求解

来源:百度知道 编辑:UC知道 时间:2024/06/05 23:58:41
改错求解~~

public static void main (String args[])
{ try{ char ch=(char)System.in.read();
. . . //其它语句 }
catch(Expception e) { return; }
catch(IOException e)
{ System.out.println(e.toString()); } }
第一个 Expception 是 IOException 的父类
为什么是父类就有问题呢?..

我给你稍微说一下,楼上几位说的很好,但是我想她们有一点没有说出来,我怕你理解不了他的机理再就赘言几句:
java中的try---catch块中,捕获异常的时候,要从子类到父类接受,用集合理解的话就是先接受小集合,再接收大集合的异常,父类对应大集合,子类对应小集合。
如果你抛出一个IO异常,同时catch IOException在前、catch Expception 在后,那么就没有编译错误产生,因为一旦有一个捕获了异常别的catch就不再去捕获了。相反如果catch Expception 在前,Expception 是所有异常的父类,他可以捕获到所有用户可以处理的异常,所以下面的catch(IOException e)
{ System.out.println(e.toString()); } }是永远没有机会执行到的,是unable reached code,就是不可到达代码块,所以java编译器在编译阶段就报错,给用户修改代码的提示。
如果你觉得我的回答你满意的话,请给我多多加分,你们的肯定会使我更加努力。我也喜欢帮助有理想的青年。希望你要努力做个好的程序员。如果你还有什么有疑问的话请给我留言!甚至qq,手机都可以!

catch(Expception e) { return; }
catch(IOException e)
{ System.out.println(e.toString()); } }

第一个 Expception 是 IOException 的父类

改法 去掉第2个 catch

交换2个 catch 的 位子 也可以

System.out.println(e.toString());
e.toString()有问题;显示异常信息好像是e.Message

先捕获子类的异常,再捕获大类的异常,捕获全部的话,直接捕获 java.lang.Exception即可