黑马程序员技术交流社区
标题: 初学异常,为什么自定义异常不能继承Exception? [打印本页]
作者: 杨闯 时间: 2013-4-13 11:16
标题: 初学异常,为什么自定义异常不能继承Exception?
本帖最后由 杨闯 于 2013-4-14 09:49 编辑
class FuShuException extends Exception{
}
class Demo{
int div(int a,int b) throws FuShuException{
if(b<0)
throw new FuShuException();//手动通过throw关键字抛出一个自定义异常对象。
return a/b;
}
}
public class Exception123 {
public static void main(String[] args) {
Demo d=new Demo();
try{
int x=d.div(4, -1);
System.out.println("x="+x);
}catch(FuShuException e){
System.out.println(e.toString());
System.out.println("被除数出现负数了!");
}
System.out.println("over!");
}
}
如上所示,自定义了异常FuShuException继承了Exception,
然后就出现了下面的错误
第一行将自定义异常FuShuException继承于Throwable后问题解决
求教各位同学,跟着毕老师手把手打的代码,为什么就出现不同的结果呢,不是因为人品吧?
作者: 梁航斌 时间: 2013-4-13 11:38
奇怪复制了你的代码,我的能运行啊。
作者: ld5128702 时间: 2013-4-13 11:45
是可以继承Exception的,通常就是继承Exception或者RuntimeException,运行了你的代码,表示可以通过,最后给你点小建议,建议你大括号的格式规范一下,因为有时候就可能导致错误,而且不好阅读啊。
作者: Asan 时间: 2013-4-13 12:17
class FuShuException extends Exception{ //处理异常的方法呢?
}
class Demo{
int div(int a,int b) throws FuShuException{//
if(b<0)
throw new FuShuException();//手动通过throw关键字抛出一个自定义异常对象。
return a/b;//如果b<0;你还return a/b;
}
}
public class Exception123 {
public static void main(String[] args) {
Demo d=new Demo();
try{
int x=d.div(4, -1);
System.out.println("x="+x);
}catch(FuShuException e){
System.out.println(e.toString());
System.out.println("被除数出现负数了!");
}
System.out.println("over!");
}
}
作者: 李易烜 时间: 2013-4-13 12:21
你抛出异常后,怎么能有返回呢?
这里改成如下:- if (b < 0) {
- throw new FuShuException();// 手动通过throw关键字抛出一个自定义异常对象。
- } else {
- return a / b;
- }
复制代码
作者: 杨闯 时间: 2013-4-13 15:49
李易烜 发表于 2013-4-13 12:21
你抛出异常后,怎么能有返回呢?
这里改成如下:
恩,感谢解答,程序抛出异常后是不会执行下面那句return语句的,只有b>0时候才会执行到
作者: 杨闯 时间: 2013-4-13 15:50
Asan 发表于 2013-4-13 12:17
class FuShuException extends Exception{ //处理异常的方法呢?
}
class Demo{
恩,感谢解答,程序抛出异常后是不会执行下面那句return语句的,只有b>0时候才会执行到
作者: 杨闯 时间: 2013-4-13 15:51
ld5128702 发表于 2013-4-13 11:45
是可以继承Exception的,通常就是继承Exception或者RuntimeException,运行了你的代码,表示可以通过,最后 ...
恩。同学,谢谢你的建议,会慢慢更正滴。至于我问的,看来真是人品问题了
作者: 杨闯 时间: 2013-4-13 15:52
梁航斌 发表于 2013-4-13 11:38
奇怪复制了你的代码,我的能运行啊。
额。确实好奇怪啊,楼下的同学也说能运行,纳了闷了,最近没做啥坏事啊。。。
作者: lipingan0520 时间: 2013-4-13 16:30
Asan 发表于 2013-4-13 12:17
class FuShuException extends Exception{ //处理异常的方法呢?
}
class Demo{
f(b<0)
throw new FuShuException();//手动通过throw关键字抛出一个自定义异常对象。
return a/b;//如果b<0;你还return a/b
如果b<0 就抛出异常了。下面的就不执行了。
作者: Sword 时间: 2013-4-14 01:00
编译运行了一遍,表示没有问题。
感觉应该是你的代码中的括弧或者逗号的问题,你可能在汉字输入法下输入的括弧或者逗号,可以仔细检查一下{:soso_e112:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |