我是一名C#开发人员,偶尔使用Java进行编码。有人可以简单地解释一下Java中被检查的异常以及为什么需要它吗?在C#中还没有遇到过这个术语。
检查的异常是编译器要求您以某种方式处理的异常。
在Java中,checked异常是ThrowableS中的不是RuntimeException,Error或它们的一个子类。
Throwable
RuntimeException
Error
Java设计人员认为需要确保程序处理合理可能的异常。一个典型的例子是IOException。每当程序执行I / O操作时,都有可能发生故障。磁盘可能已满,文件可能不存在,可能存在权限问题,等等。
IOException
因此,Java被设计为使得程序必须以某种方式在语法上处理异常。这可以是catch块,也可以是通过某种方式重新抛出异常。
C#没有检查的异常。他们决定将此问题留给应用程序开发人员(面试)。受检查的异常是有争议的,因为它们会使代码变得冗长,而开发人员有时会使用空的catch块来琐碎地处理它们。此外,可以使用哪种标准库方法引发检查异常。例如,为什么不File.delete抛出(新的Java 7 API有所不同)IOException?
File.delete
Hejlsberg在采访中指出的另一个问题是可版本性。在throw子句中添加检查后的异常会强制修改和重新编译使用该方法的所有代码。
throw