java里什么时候需要自己定义异常类?使用自定义异常与系统异常有何差别?

 我来答
monica1_1_1
2017-04-29 · 超过20用户采纳过TA的回答
知道答主
回答量:55
采纳率:100%
帮助的人:19.5万
展开全部
运行时异常:由java虚拟机抛出的异常。用户不必处理。 而一般异常是用户可以抛出的异常,如果抛出调用必须进行处理。
1,从机制角度来讲:
运行时异常:
  在定义方法时不需要声明会抛出runtime exception;
  在调用这个方法时不需要捕获这个runtime exception;
  runtime exception是从java.lang.RuntimeException或java.lang.Error类衍生出来的。
一般异常:
  定义方法时必须声明所有可能会抛出的checked exception;
  在调用这个方法时,必须捕获它的checked exception,不然就得把它的exception传递下去;
  checked exception是从java.lang.Exception类衍生出来的。
2,从逻辑的角度来说,
运行时异常和一般异常是有不同的使用目的的。一般异常用来指示一种调用方能够直接处理的异常情况。而运行时则用来指示一种调用方本身无法处理或恢复的程序错误。
希望采纳,有问题可以继续追问
追答
希望采纳,如有疑问,可以继续追加,谢谢
jlhuang9
2017-04-28 · TA获得超过319个赞
知道小有建树答主
回答量:401
采纳率:72%
帮助的人:178万
展开全部

关键在于你自己怎么用了,

到时你try  catch 不同的异常来做不同应对啊,

比如说,我做个异常,用系统的异常类,

但每个类都有自已的名字,你自己Try,catch时要catch这个异常,才知道具体什么问题,进而做什么操作

假如登录时,有两个验证,账号错误,或密码错误,

你可以用系统的throw new Exception("用户名错误")

try{
   login(username,password);
}catch(Exception e){
      System.out.println(e.getMessage);
   doSomeThing.......
}

但是假如说其他问题呢 比如说数据库断了你是不是应该重新登陆试试呢

都在这一个Exception 里,肯定满足不了要求的

try{
   login(username,password);
}catch(ErrorUserException e){
      System.out.println(e.getMessage);
   doSomeThing.......
}catch(SqlErrorException e){
        System.out.println(e.getMessage);
   doSomeThing.......
}

这样的话逻辑更清晰

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ldzywxj
2017-04-28 · TA获得超过107个赞
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:60万
展开全部
程序调试
日志记录
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式