在我的一次采访中,采访者问了我一个关于多个catch
块的问题。这个问题是:为什么我们需要的其他Exception
子类来处理异常,如果父类,也就是Exception
,可以单独处理所有其他异常。当仅有Exception类可以处理所有类型的异常时,其他Exception类的需求是什么?
4
A
回答
2
有使用异常或RuntimeException的自写的子类的不同的优势:
- 您可以添加你交出你的日志附加信息(字段)到您的例外。如果他的应用程序崩溃
- 这可以是更容易或跟踪您的错误给您的用户一些更多的信息,他可以为您提供有用的您可以更轻松区分不同故障的原因,所以决定如何解决不同errorneous情况(例如如果您输入的某个参数错误,您可以使用IllegalArgumentException,以便可以提示用户输入有效参数;另一方面,IOException表示您无法读取/写入数据)
0
我们使用异常的子类,如
FileNotFoundException
使我们得到显示正确的消息。
如果我们使用唯一的例外,当应用程序抛出一个异常,我们就不会知道异常是什么。
这不会是调试非常好。 使用子类也有助于我们更好地记录异常。
0
因为我们可以用不同的方式处理不同的例外情况,例如:
catch (FileNotFoundException e){
createNewFile();
} catch (IOException e){
System.out.println("Everything is bad(");
}
1
我从基础教程引述甲骨文
“在大多数情况下,但是,你要异常处理程序要尽可能具体。其原因是,处理程序必须做的第一件事是确定什么类型的异常发生,才可以在最好的恢复策略决定。实际上,通过不捕捉特定的错误,处理程序必须适应任何可能性。异常处理程序过于笼统,可以使代码更容易出错通过捕捉和处理那些不是由程序员预期和该处理的目的不是例外“
在这里看到完整的文本:http://docs.oracle.com/javase/tutorial/essential/exceptions/advantages.html
相关问题
- 1. 为什么异常在类名中通常有后缀'Exception'?
- 2. 为什么扩展Exception类?
- 3. 继承Exception类登录异常
- 4. 在Python中是否有任何Exception超类,如Throwable Java Exception?
- 5. 什么是类型理论中的所有类型的所有实例的常见超类型
- 6. 捕获Exception类而不是Exception子类是不好的做法吗?
- 7. C++如何处理泛型异常对象的所有类型的异常?
- 8. 引发Exception类和Exception实例有区别吗?
- 9. 仅将Exception类用作传输机制?
- 10. 为什么Exception(str())抛出异常?
- 11. C#中的Specific和Exception异常有什么区别?
- 12. 创建自己的Exception类的目的是什么
- 13. 什么是C++处理类模板及其类型的方式?
- 14. 什么是UITableViewCellStyle的所有类型?
- 15. 可以在所有其他类中使用的全局类
- 16. 该标准对抛出异常的类型有什么要求?
- 17. 所有类型sql异常的列表
- 18. 什么类型的异常是(0)null?
- 19. 抛出异常,没有“Exception in thread ...”
- 20. 什么是Django中捕获所有异常类regarging文件存储处理?
- 21. 调用所有其他类的类 - PHP
- 22. 为什么在C#Exception类没有带有1个异常参数的构造函数?
- 23. 为什么需要以不同于其他MIME类型请求的方式处理多部分请求?
- 24. 'System.FormatException'类型的未处理的异常
- 25. 未处理的异常类型MalformedURLException的
- 26. 类型的未处理的异常“Newtonsoft.Json.JsonReaderException”
- 27. 未处理的异常类型ParseException的
- 28. 为什么我可以转换为这种类型而不是其他类型?
- 29. PHP可以处理所有类型的SQL吗?
- 30. MySql - Java - 找不到类Exception