java里什么时候需要自己定义异常类?使用自定义异常与系统异常有何差别?
展开全部
运行时异常:由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,从逻辑的角度来说,
运行时异常和一般异常是有不同的使用目的的。一般异常用来指示一种调用方能够直接处理的异常情况。而运行时则用来指示一种调用方本身无法处理或恢复的程序错误。
希望采纳,有问题可以继续追问
1,从机制角度来讲:
运行时异常:
在定义方法时不需要声明会抛出runtime exception;
在调用这个方法时不需要捕获这个runtime exception;
runtime exception是从java.lang.RuntimeException或java.lang.Error类衍生出来的。
一般异常:
定义方法时必须声明所有可能会抛出的checked exception;
在调用这个方法时,必须捕获它的checked exception,不然就得把它的exception传递下去;
checked exception是从java.lang.Exception类衍生出来的。
2,从逻辑的角度来说,
运行时异常和一般异常是有不同的使用目的的。一般异常用来指示一种调用方能够直接处理的异常情况。而运行时则用来指示一种调用方本身无法处理或恢复的程序错误。
希望采纳,有问题可以继续追问
追答
希望采纳,如有疑问,可以继续追加,谢谢
展开全部
关键在于你自己怎么用了,
到时你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.......
}
这样的话逻辑更清晰
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序调试
日志记录
日志记录
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询