捕获异常时,为什么我们使用Exceptions子类作为o / p清楚地给出了我们确切的异常? [重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了捕获异常时,为什么我们使用Exceptions子类作为o / p清楚地给出了我们确切的异常? [重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
public class Test{
public static void main(String args[]){
try{
int data=25/0;
System.out.println(data);
}
catch( ArithmeticException e)
{
System.out.println(e);
}
}
}
o / p:java.lang.ArithmeticException:/ by零
在这段代码中,即使我使用ArithmaticException类或直接使用Exception类捕获异常,o / p也是相同的。那么为什么我们在不同的catch语句中使用子类而不是每次都直接使用Exception类?
答案
你永远不应该使用catch(Exception)
,因为它不仅会捕获你感兴趣的异常,而且还会无意中捕获可能发生的任何RuntimeException
(因为RuntimeException扩展了Exception)
另一答案
因为有时您只想捕获ArithmeticException或NumberFormatException。 Exception类包含ArithmeticException,NumberFormatException和其他Exception子类。
另一答案
您可以根据错误显示包含更多信息的消息,如果错误不在预测范围内,则可以显示通用消息。
回答评论中的问题:
try {
int data = 25 / 0;
System.out.println(data);
}
catch (ArithmeticException e) {
System.out.println("Wrong numbers to process");
}
catch (IOException e) {
System.out.println("Other error message here.");
}
catch (Exception e) {
/*Here i dont know possible errors in my code, just show a generic message and try resolve the problem for your client.*/
System.out.println("Something wrong./n" + e.getMessage());
}
以上是关于捕获异常时,为什么我们使用Exceptions子类作为o / p清楚地给出了我们确切的异常? [重复]的主要内容,如果未能解决你的问题,请参考以下文章