gpt4 book ai didi

java - 在Java中,为什么要在catch block 中指定异常类型?

转载 作者:行者123 更新时间:2023-12-01 12:49:35 25 4
gpt4 key购买 nike

我一直在工作中使用 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)既不好也不坏。他们只是提供信息。

NullPointerExceptionsFileNotFoundExceptions .

通常(并非总是),如果 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com