Java异常处理机制问题

若tryThis()方法抛出异常NumberFormatException,下面的代码将产生什么输出?try{tryThis();return;}catch(IOExce... 若tryThis( )方法抛出异常NumberFormatException,下面的代码将产生什么输

出?
try{
tryThis( );
return;
} catch(IOException x1) {
System.out.println(“exception1”);
return;
}catch (Exception x2){
System.out.println(“exception2”);
return;
} finally {
System.out.println(“finally”);


⒒class TestException{
public static void main(String〔〕 args){
try{
oneMethod( );
}catch(Exception e){
System.out.println(“there is an exception”);


static void oneMethod( ){
try{
anotherMethod( );
System.out.println(“normal”);
}catch(ArithmeticException e){
System.out.println(“there is an arithmeticexception”);

finally{
System.out.println(“in finally”);

System.out.println(“outside try block”);

static void anotherMethod( ){
throw new NullPointerException( );



不太理解Java的异常处理,我只知道,如果出现异常,然后这块异常后面的语句不再执行,而就找相近catch的匹配模块,还有,finally无论是否异常都执行.
但是,这题,我怎么看抛出异常NumberFormatException这个东西匹配的catch模块啊...该执行那个语句...最后运行结果是什么?
那个IOException又是什么异常模块啊???搞 不懂,请高手指教啊!!!
本悬赏有2小题
第2题是11开头的那题,我尤其看不懂第11题
展开
 我来答
百度网友bab72e3
2008-07-02 · TA获得超过116个赞
知道答主
回答量:38
采纳率:0%
帮助的人:60.3万
展开全部
第一个输出结果为:
exception2
finally

第二个输出结果为:
in finally
there is an exception

异常的匹配方式是向上匹配原则,如果catch中没有精确匹配的异常类型,即向该异常的父级异常匹配,进而处理结果。第一题中,出现了很多return混淆视听。一般搜帆搏来说,finally是在return之前执行的;第二题中匹配异常时就出现了个ArithmeticException(运算异常)去匹配NullPointerException(空指针),很显然不会匹配成功。因为他们都是RuntimeException的子类,所以捕获ArithmeticException的代码块不会执行而直接执行finally中的代码。还有世祥,因为try中断了代码执行,所以在finally后面的代码不会显示。如果try中没有异常发生,才会打印出outside try block。

IOException是输入输出的异常。一般在文件读取操作时多发生。

===========================================

Ⅱ题详解!

代码执行的顺序用1、2、3表示如下:

class TestException {
public static void main(String[] args) {
// step 1
try {
oneMethod(); // --> goto step 2
// step 6 处理抛出的NullPointerException,在catch中匹配
} catch (Exception e) {
// step 7 NullPointerException是Excpetion的子类,故打印结果
System.out.println("there is an exception");
}
// 完全结轿旅束
}

static void oneMethod() {
try {
// step 2
anotherMethod(); // --> goto step 3
// 因为出现了异常,所以不打印,直接匹配catch中的Exception类型
System.out.println("normal");
// step 4
} catch (ArithmeticException e) {
// 因为异常不匹配,所以不打印
System.out.println("there is an arithmeticexception");
// step 5
} finally {
// 作为try的结束操作,会执行
System.out.println("in finally");
}
// 因为出现了异常,所以跳出,不会打印
System.out.println("outside try block");
}

static void anotherMethod() {
// step 3
throw new NullPointerException();
}
}

理解了么?这个其实不难,就是一直在代码块之间跳转
nb...9@163.com
2008-07-02 · 超过35用户采纳过TA的回答
知道答主
回答量:179
采纳率:0%
帮助的人:0
展开全部
NumberFormatException包含在锋激瞎Exception 中,
IOException是输入输银空出异常模块,铅芦I--input O--out
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
angelicdemon
2008-07-02
知道答主
回答量:58
采纳率:0%
帮助的人:0
展开全部
exception2
finally
后面是哪里在调用tryThis()的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式