![](/img/trans.png)
[英]Why we have more than one class constructors in a class and what its their possible use?
[英]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
类而不是FileNotFoundException
时FileNotFoundException
什么逻辑上的扩展FileNotFoundException
时,会有什么区别呢? 这是没有区别,只是使用该异常类的一种良好的编程风格,该异常类的名称在当前情况下(如果两者均可检查的话)更合乎逻辑?
您可以使用其他名称,因为可以说您有一个FileReader
。 如果抛出FileNotFoundException
,则说明找不到该文件。 但这与IOException
(即使FNFE扩展IOException
)有所不同,因为有很多事情会引发IOException
。
存在不同的例外是因为您希望能够以不同的方式处理不同的问题。 回到上面的示例,如果您有FileNotFoundException
,则可以执行类似写默认文件或告诉用户没有文件的操作。 但是,如果您有其他异常,则可以将发生的任何错误通知用户。
不需要检查的异常类型是运行时异常(它们都扩展了RuntimeException
)。 这些异常之所以存在,是因为在大多数情况下它们不会发生,并且如果它们发生得很少,那将很烦人。
但是,如果您要从String[]
逐行读取一个文件(您不确定它实际上是否有第7行),则可以使用ArrayIndexOutOfBoundsException
处理该问题。 同样, NullPointerException
处理完全不同的问题。 我们不能以相同的方式解决所有这些问题,因此,当发生某个问题而不是YZX时,将使用不同的异常来告诉计算机执行XYZ。
我必须重新构建我的问题,以使其更清晰并防止误解我的确切要求。 结果,我收到了我想要的信息。 如果有人有相同的问题,您可以在这里找到答案。
这也部分有助于:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.