我一直在工作中使用 Java 进行编码,但我所知道的关于 Java 的一切都来自于在我需要知道的时候谷歌搜索如何做任何事情。我以前在学校学过 C/C++,现在我刚刚开始学习 Java 中的异常处理。
在Java中,为什么要在catch block 中指定异常类型?这样做有什么好处?仅使用 Exception 而不是“IOException”有哪些缺点?
编码时什么时候应该使用 try/catch block ?我注意到我进入了只对逻辑部分进行编码的模式,并且只有在编码时显示错误并告诉我添加它时,或者当我运行代码并且程序由于异常而中途退出时,我才添加 try/catch,然后我找到它在代码中发生的位置,并在那里添加 try/catch block 来“处理异常”,以使代码继续运行。这是人们通常决定在 try/catch 中添加何处的方式吗?有没有更有效的方法,例如“在代码中执行某些操作时,添加 try/catch”?
非常感谢!
编辑:
什么时候应该使用 try/catch block 以及什么时候应该使用 private void method() throws Exception
?除了语法之外,两者还有什么区别?
最佳答案
许多相对较新的程序员都认为所有异常都是不好的,但事实并非如此。异常(exception)既不好也不坏。他们只是提供信息。
拿NullPointerExceptions
与 FileNotFoundExceptions
.
通常(并非总是),如果 NullPointerException
抛出,这意味着您的代码中某处存在错误。您忘记初始化变量,没有检查标志是否为真,等等。当抛出这些异常时,您通常希望程序失败并崩溃,因为它遇到了意外行为。您希望失败是响亮且明显的,因为如果程序在空指针之后没有立即失败,则程序可能会变得非常古怪,并且您将很难找到问题。
但是,FileNotFoundExceptions
一般是相反的。
想象一下,如果在程序中的某个时刻,您提示用户输入文件。用户可能会或可能不会输入有效文件,但无论如何程序都不应该在此处崩溃。相反,如果找不到文件,应该通知用户,并再次提示。这通常就是为什么你有 catch block ,所以如果抛出异常,你可以处理它并继续(通过显示对话框/消息/其他内容)。
但是,如果 NullPointerException
被抛出这里,你肯定希望你的程序崩溃(因为它可能是你的代码中的一个错误)。这就是为什么 catch block 强制您指定异常,以便您可以处理一些异常(例如 FileNotFoundException
),并让其他异常通过(例如 NullPointerException
)
通常,如果您的程序能够从异常中恢复,那么您希望捕获异常。这就是(应该是)java强制你try/catch
的原因某些异常(exception)情况。大多数异常都是您的程序应该能够恢复的异常(尽管有时您可能希望失败,要么声明您的方法抛出该异常,要么将捕获的异常包装在 RuntimeException
中)。
关于java - 在Java中,为什么要在catch block 中指定异常类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336123/