繁体   English   中英

Java中的异常。 我们有一个以上的可检查类和一个不可检查的类做什么?

[英]Exceptions in Java. What for do we have more than one checkable and one uncheckable class?

我是Java编程的新手。 我刚刚开始学习异常,我在API文档中发现Exception类的所有子类都有两个构造函数–一个默认构造函数,另一个带有String参数。

所有这些类之间的区别在于,其中一些是可检查的,而其他是不可检查的。 不可检查不是必须使用,必须使用可检查。 我对吗? 如果是这样,我们为什么要拥有一个以上的可检查类和一个不可检查的类?

例如,如果我们使用EOFException类和FileNotFoundException类,除了名称之外,它们之间有什么区别? 两者都有相同的构造函数,并且都是可检查的。 我知道可能发生EOF会引发EOFException因为此名称在这种情况下是合理的并且可以理解。 但是,如果我们有机会使用FileNotFoundException而不是EOFException怎么办? 所不同的只是一个名字。

如果我想创建自己的异常,那么当我扩展EOFException类而不是FileNotFoundExceptionFileNotFoundException什么逻辑上的扩展FileNotFoundException时,会有什么区别呢? 这是没有区别,只是使用该异常类的一种良好的编程风格,该异常类的名称在当前情况下(如果两者均可检查的话)更合乎逻辑?

您可以使用其他名称,因为可以说您有一个FileReader 如果抛出FileNotFoundException ,则说明找不到该文件。 但这与IOException (即使FNFE扩展IOException )有所不同,因为有很多事情会引发IOException

存在不同的例外是因为您希望能够以不同的方式处理不同的问题。 回到上面的示例,如果您有FileNotFoundException ,则可以执行类似写默认文件或告诉用户没有文件的操作。 但是,如果您有其他异常,则可以将发生的任何错误通知用户。

不需要检查的异常类型是运行时异常(它们都扩展了RuntimeException )。 这些异常之所以存在,是因为在大多数情况下它们不会发生,并且如果它们发生得很少,那将很烦人。

但是,如果您要从String[]逐行读取一个文件(您不确定它实际上是否有第7行),则可以使用ArrayIndexOutOfBoundsException处理该问题。 同样, NullPointerException处理完全不同的问题。 我们不能以相同的方式解决所有这些问题,因此,当发生某个问题而不是YZX时,将使用不同的异常来告诉计算机执行XYZ。

我必须重新构建我的问题,以使其更清晰并防止误解我的确切要求。 结果,我收到了我想要的信息。 如果有人有相同的问题,您可以在这里找到答案。

异常或它如何从“内部”起作用?

这也部分有助于:

当仅Exception类可以处理所有类型的异常时,其他Exception类有什么需求?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM