| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1927 人关注过本帖
标题:[求助]一个异常处理问题
只看楼主 加入收藏
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
错,异常没有被捕获的话,S4是肯定不会执行的,
如果把s4放到finally{}里面那才会执行的.
此时结束try所在的方法,把异常向上一级传递,直到main方法为止

可惜不是你,陪我到最后
2006-06-18 10:28
mordew
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-5-9
收藏
得分:0 
对。
S4想要执行。要放在finally块中。

when we live,we should study.
2006-06-18 12:45
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

这是有关于异常处理的基础知识,应该很了解的说


可惜不是你,陪我到最后
2006-06-18 12:56
private
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-5-1
收藏
得分:0 
建议10楼的兄弟要好好看看 异常的基础了!

2006-06-18 13:01
private
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-5-1
收藏
得分:0 


另外我要提醒11楼的兄弟,
我刚刚详读了 多线程

如果异常不被捕捉的话,不一定要交到main那结束,
可能交到它的上级顶层线程那,如不能捕获,那么杀死此线程,
而main线程不会被强行终止.

2006-06-18 13:07
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
那当然,如果是新起的线程的话,那异常没有捕捉到只是此线程结否了,main的线程依然在运行,也就是程序依然在运行

可惜不是你,陪我到最后
2006-06-18 13:24
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 
以下是引用千里冰封在2006-6-18 10:28:50的发言:
错,异常没有被捕获的话,S4是肯定不会执行的,
如果把s4放到finally{}里面那才会执行的.
此时结束try所在的方法,把异常向上一级传递,直到main方法为止


/**
* 以下代码就不写注释了,相信大家都能看懂。
*/
public class ExceptionTest {

/**
* 在test方法中有一个try块,里面的代码我们可以看成是s1,s2,s3,而将打印\"The End\"这句话作为s4.不将注释去掉是不会发生任何错误的,这点相信不会有异议。
* 在没有错误的情况下运行,我们得到的是The End.
* 将注释去掉,则会引发一个异常。我们得到的结果是NumberFormat和The End,可以说The End在不管什么情况下都是会执行的。
* 我不知道我的这代码与楼主的代码有什么不一样的地方
*/
public void test() {
String s = null;

try {
s = \"5\";
int i = Integer.valueOf(s);

// s = \"a\";
i = Integer.valueOf(s);
}
catch(NumberFormatException num) {
System.out.println(\"NumberFormat\");
}
catch(Exception e) {
System.out.println(\"Exception\");
}

System.out.println(\"The End!\");
}

public static void main(String [] args) {
new ExceptionTest().test();
}
}


向着软件工程师的目标前进!
2006-06-18 14:48
水影月圆
Rank: 4
等 级:贵宾
威 望:11
帖 子:738
专家分:0
注 册:2005-8-2
收藏
得分:0 

我把叶子的代码给改了下
/**
* 以下代码就不写注释了,相信大家都能看懂。
*/
public class ExceptionTest {

/**
* 在test方法中有一个try块,里面的代码我们可以看成是s1,s2,s3,而将打印"The End"这句话作为s4.不将注释去掉是不会发生任何错误的,这点相信不会有异议。
* 在没有错误的情况下运行,我们得到的是The End.
* 将注释去掉,则会引发一个异常。我们得到的结果是NumberFormat和The End,可以说The End在不管什么情况下都是会执行的。
* 我不知道我的这代码与楼主的代码有什么不一样的地方
*/
public void test() {
String s = null;

try {
s = "5";
int i = Integer.valueOf(s);

s = "a";
i = Integer.valueOf(s);
}
catch(ArithmeticException num) {
System.out.println("NumberFormat");
}
catch(SecurityException e) {
System.out.println("Exception");
}

System.out.println("The End!");
}

public static void main(String [] args) {
new ExceptionTest().test();
}
}

运行后

图片附件: 游客没有浏览图片的权限,请 登录注册



我后来把楼主的意思又看了次 他说的是如果S2出了一个异常 而没被捕获 所以我现在认同private和冰封的话
叶子的代码说明了 一个异常如果被捕获了 那将继续从try{}catch{}块下面的一行继续执行 如果没有 就顺着执行

子非鱼,安知鱼之江湖?子非我,安知我之功夫 http://20681.
2006-06-18 16:27
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
以下是引用飘飘叶子在2006-6-18 14:48:39的发言:


/**
* 以下代码就不写注释了,相信大家都能看懂。
*/
public class ExceptionTest {

/**
* 在test方法中有一个try块,里面的代码我们可以看成是s1,s2,s3,而将打印\"The End\"这句话作为s4.不将注释去掉是不会发生任何错误的,这点相信不会有异议。
* 在没有错误的情况下运行,我们得到的是The End.
* 将注释去掉,则会引发一个异常。我们得到的结果是NumberFormat和The End,可以说The End在不管什么情况下都是会执行的。
* 我不知道我的这代码与楼主的代码有什么不一样的地方
*/
public void test() {
String s = null;

try {
s = \"5\";
int i = Integer.valueOf(s);

// s = \"a\";
i = Integer.valueOf(s);
}
catch(NumberFormatException num) {
System.out.println(\"NumberFormat\");
}
catch(Exception e) {
System.out.println(\"Exception\");
}

System.out.println(\"The End!\");
}

public static void main(String [] args) {
new ExceptionTest().test();
}
}

你这个程序例子恰 好说明了问题,你的那 句System.out.println("The End!");当然会执行,因为你抛出的异常被你捕捉了
如果没有被你捕捉的话,下面的肯定不会执行的
你的为什么会执行,.是因为你第二个捕捉的语句,他把所有Exception的子类的异常都能捉住,所以异常不会向上传递,所以下面的那句会执行,
要测试就要像水影月圆那样,抛出的异常捕捉不到才能测试到


可惜不是你,陪我到最后
2006-06-18 18:34
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 
我终于知道了……
原来是我看错了……异常未被捕捉这句看错掉了……

向着软件工程师的目标前进!
2006-06-18 18:53
快速回复:[求助]一个异常处理问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016067 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved