Java 自定义异常
classfushuexceptionextendsException{privateintvalue;fushuexception(Stringmsg,intk){su...
class fushuexception extends Exception
{
private int value;
fushuexception(String msg,int k)
{
super(msg);
this.value=k;
}
public int getValue()
{
return value;
}
}
class Demo extends Exception
{
public int div(int a,int b)throws fushuexception
{
if(b<0)
throw new fushuexception("???",b);
return a/b;
}
}
class a
{
public static void main(String[] args) {
Demo b=new Demo();
try
{
int x=b.div(4,-1);
System.out.println("x="+x);
}
catch(Exception e)
{
System.out.println(e.toString());
System.out.println(e.getValue());//错误
}
}
}
这个为什么getValue()这个函数没法用 展开
{
private int value;
fushuexception(String msg,int k)
{
super(msg);
this.value=k;
}
public int getValue()
{
return value;
}
}
class Demo extends Exception
{
public int div(int a,int b)throws fushuexception
{
if(b<0)
throw new fushuexception("???",b);
return a/b;
}
}
class a
{
public static void main(String[] args) {
Demo b=new Demo();
try
{
int x=b.div(4,-1);
System.out.println("x="+x);
}
catch(Exception e)
{
System.out.println(e.toString());
System.out.println(e.getValue());//错误
}
}
}
这个为什么getValue()这个函数没法用 展开
7个回答
展开全部
{ int x=b.div(4,-1); System.out.println("x="+x); } catch(Exception e) {
改为
{ int x=b.div(4,-1); System.out.println("x="+x); } catch(fushuexception e) {
你catch中声明的是父类Exception 虽然你的子类fushuexception 有这个方法但是不能用父类调用,反过来是可以的。这个是不JAVA自定义异常的问题 而是JAVA的继承的问题。
改为
{ int x=b.div(4,-1); System.out.println("x="+x); } catch(fushuexception e) {
你catch中声明的是父类Exception 虽然你的子类fushuexception 有这个方法但是不能用父类调用,反过来是可以的。这个是不JAVA自定义异常的问题 而是JAVA的继承的问题。
2014-01-20
展开全部
因为 catch(Exception e) 你定义的异常类型是父类
所以看不到子类方法
解决方法 catch(fushuexception e) 确定告诉程序你要捕获的 为fushuexception 异常
或者 判断类型后强转
if (e instanceof fushuexception ) {
fushuexception err = (fushuexception)e ;
System.out.println(err.getValue());
}
令外:java 类名 首字母大写 应写成 FushuException 更好
所以看不到子类方法
解决方法 catch(fushuexception e) 确定告诉程序你要捕获的 为fushuexception 异常
或者 判断类型后强转
if (e instanceof fushuexception ) {
fushuexception err = (fushuexception)e ;
System.out.println(err.getValue());
}
令外:java 类名 首字母大写 应写成 FushuException 更好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
捕获异常时不应该用exception,子类对象指向父类引用,只能调用父类方法,所以调用不到getValue()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
“catch(Exception e)“你catch的是Exception 是父类,它里面没有getValue()这个方法,所有你只能catch(fushuexception e)才行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
getValue()是fushuexception类的方法,你这里是Exception类,Exception是fushuexception的父类,但Exception没有getValue()方法。你写出catch(fushuexception e) {} 那就能用getValue()方法了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-20
展开全部
这个只是一个自定义的类,演示异常使用,
System.out.println(e.getValue());//错误
System.out.println(e.getValue());//错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询