黑马程序员技术交流社区
标题:
求解~!
[打印本页]
作者:
黄湘怡
时间:
2011-11-8 22:08
标题:
求解~!
class FuException extends Exception
{
FuException(String ms)
{
super(ms);
System.out.println("111111111================");
}
}
class Demo
{
int div(int a,int b) throws FuException
{
System.out.println("-------------");
if(b <0)
{
System.out.println("++++++++++++++");
throw new FuException("不能为负数-------55555");
}
return a/b;
}
}
class ExceptionDemo
{
public static void main(String[] args)
{
Demo d = new Demo();
try{
int num = d.div(3,-1);
System.out.println("num = "+num);
}
catch(FuException e)
{
System.out.println("222222============");
System.out.println("不能为负数");
}
System.out.println("over");
}
}
复制代码
运行结果是:-------------
++++++++++++++
111111111========
222222============
不能为负数
over
我想要的结果是:-------------
++++++++++++++
111111111========
不能为负数-------55555
over
怎么才能执行到这样的结果呢?
作者:
海林
时间:
2011-11-8 23:03
我查了一下Exception的源代码,它里面是这样写的public Exception(String message) {
super(message);
} 就是说会调用 Throwable 类里的这个方法public Throwable(String message) {
fillInStackTrace();
detailMessage = message;
}
这里他把参数给了 detailMessage 这是用于网堆栈信息里填写的信息,而并非用此信息构建。这样的话那句话就结束了。因为main函数中捕获到了异常所以到catch语句中去了 所以打印的上面的信息。而并非是你所想得。
作者:
柴亚飞
时间:
2011-11-8 23:07
不能为负数-------55555
传递给了FuException(String ms)中的ms,ms并没有被你打印,而是作为Exception中的一个变量值(好像是Exception的message)。你可以通过更改
System.out.println("222222============");为System.out.println(e.message)。(实在是忘了具体的字段名或是方法名)。
总之,“不能为负数-------55555”自始至终都没有打印语句输出。它在你构造FuException(String ms)的时候变成了一个属性,Exception中有可以得到这个属性的字段或方法。你找到包含这个字符串信息的属性或方法,再打印出这个信息就可以了。打印语句的具体位置就是“222222=======”的位置。
作者:
王振宇
时间:
2011-11-8 23:20
catch(FuException e)
39. {
40. System.out.println("222222============");
//加上下面这句就可以打出"不能为负数-------55555"
e.toString();
41. System.out.println("不能为负数");
42. }
作者:
石宗银
时间:
2011-11-9 00:43
e.printStackTrace(); 打印 异常提示信息,和跟踪栈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2