关于java自定义异常类的一个代码

classMyExceptionextendsException//自定义异常类{publicMyException(Stringmsg){super(msg);}}pu... class MyException extends Exception //自定义异常类{ public MyException(String msg) { super(msg); }}public class person { private String name; private int age; public int getAge() { return age; } public String getName() { return name; } public void setAge(String name,int age) throws MyException { this.name=name; if(age<0) //年龄小于0抛出异常 throw new MyException("年龄不能小于0"); this.age=age; } public static void main(String[] args) { person p = new person(); try{ p.setAge("小明",-1); //捕获异常 System.out.println("姓名:"+p.getName()); System.out.println("年龄:"+p.getAge()); }catch(MyException e){ e.printStackTrace();

}
}
一直报下面那个错误 真心没辙了
展开
 我来答
No_i壊娚還
2015-11-03
知道答主
回答量:24
采纳率:0%
帮助的人:5.6万
展开全部

  1 程序中的异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。

  Java异常类层次结构图:


  使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。
    在程序中使用自定义异常类,大体可分为以下几个步骤。
(1)创建自定义异常类。
(2)在方法中通过throw关键字抛出异常对象。
(3)如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
(4)在出现异常方法的调用者中捕获并处理异常。


创建自定义异常类

public class MyException extends Exception {
private static final long serialVersionUID = 1L;

public MyException(){
super();
}

public MyException(String msg){
super(msg);
}
}

使用的话就不演示了 如果你已经研究到了自定义异常 那么我相信你也一定会使用了 

如果不会使用 建议学会使用后再来看这篇文章

wnxsjx
2014-11-28 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:69.4万
展开全部

1.p.setAge("小明",-1);              

      此时age=-1;

2. public void setAge(String name,int age) throws MyException
 {
  this.name=name;
 

 if(age<0)                                                           //年龄小于0抛出异常
   throw new MyException("年龄不能小于0");


  this.age=age;
 }


 3. try{
   p.setAge("小明",-1);                                        //捕获异常
   System.out.println("姓名:"+p.getName());
   System.out.println("年龄:"+p.getAge());
  }

catch(MyException e){    e.printStackTrace();  
 
 }

这异常肯定会报啊,因为你设置的年龄小于0了。

追问

e.printStackTrace();
改成
System.out.println("1"); 他输出的信息还是不变
追答
你写好源代码后,有没有重新编译?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小曹大人_
2014-11-28 · TA获得超过134个赞
知道小有建树答主
回答量:81
采纳率:0%
帮助的人:85.4万
展开全部
经过本大人的亲自测试,你的代码没有问题。
你试一下在之前是不是有定义过一个类class person,改个类名再运行

或者MyException 这个类名也改改。如果你确认之前没有定义过这两个类名的话,那只能说人品问题了,我是直接把你代码复制到本地运行的,除了提示少了一个"}"大括号。其它一切正常
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
呼哈嘿吼呵Cf
2014-11-28 · TA获得超过210个赞
知道小有建树答主
回答量:335
采纳率:0%
帮助的人:207万
展开全部
报的错是你没setage的方法也,和你的thorw的exception没关系
追问
能麻烦讲的详细点么,具体要怎么改呢?
追答
你 看看你的person里有没有setAge这个方法,估计是方法参数不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式