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

发布网友 发布时间:2022-03-31 06:06

我来回答

3个回答

热心网友 时间:2022-03-31 07:35

运行时异常:由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,从逻辑的角度来说,
运行时异常和一般异常是有不同的使用目的的。一般异常用来指示一种调用方能够直接处理的异常情况。而运行时则用来指示一种调用方本身无法处理或恢复的程序错误。
希望采纳,有问题可以继续追问追答希望采纳,如有疑问,可以继续追加,谢谢

热心网友 时间:2022-03-31 08:53

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

到时你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.......
}

这样的话逻辑更清晰

热心网友 时间:2022-03-31 10:28

程序调试
日志记录

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com