所以我有两个关于java的一般问题。第一个问题是,什么时候在方法体中使用try/catch,而不是在声明方法时使用throws异常?这是我的意思的一个小例子。这是:
public void whileChatting() throws IOException{}
对抗
public void closeConnection() {
try {
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
然后我的第二个问题是什么时候知道捕获或抛出什么类型的异常?我指的是诸如IOException或EOFException等异常...
如果有一个好的链接,有人可以发给我教这一切(这可能比我想象的更复杂),我会像你回答它一样感激。谢了。
当您想要处理它的原因时,您可以使用try/catch,否则您应该传播它,以便可以在正确的时间处理它。
javadoc和tutorialspoint异常是一个好的开始
两个好的经验法则:
>
您应该只捕获实际可以处理的异常
早扔/晚抓
没有硬性而快速的答案。
一般来说,您使用“throws”的频率可能比使用自定义“try/catch”的频率要高得多。简单地说,因为“知道如何恢复”的“决策”模块相对较少,但相应地,您会有“许多”可能引发异常的模块。
在你的第一个例子中,
public void whileChatting() throws IOException{}
这意味着它将只向调用函数的任何对象抛出异常。然后可以在使用try-catch块调用该方法时捕获它。例如
try{
whileChatting();
}
catch(IOException e){
e.printStackTrace();
}
抛出一个方法基本上会将其传播到链上,因此任何调用此方法的方法都需要包含抛出IOException
,或者异常需要在更高级别的方法中处理(通常通过try-catch块)。
捕捉异常是一种优雅地处理异常的方式。常见的是< code > e . printstacktrace();将错误的详细信息打印到控制台,但这并不总是必要的。有时,您可能希望执行< code>System.exit(0)甚至< code>System.out.println("方法中的错误whileCalling()")
使用捕获块,您可以捕获任何类型的异常!你还可以做一个 try-catch-final 块,它将运行 try 块中的代码,捕获任何异常,无论是否捕获任何异常,它都将进入 finally 块并运行该代码。
要知道您可能需要捕获什么异常,您可以查看可能抛出异常的类的Javadocs。在那里您会找到该类可以抛出的所有可能内容的列表。您还可以只捕获Exception
,它将捕获任何可以想象到的异常!(好吧,同意它扩展了异常)
最后,您可以像这样链接catch块。
try{
whileCalling();
}
catch(IOException e){
//handle this situation
}
catch(FileNotFoundException e){
//handle this situation
}
catch(Exception e){
//handle this situation
}
这将像否则一样工作 - 如果阻止并且不捕获重复项。
因此,基本上回答您的问题:
1:< code > throw 异常意味着让其他人来处理它,不管这是另一个类,另一个方法,或者只是希望它不要发生,否则你的程序会崩溃(相当糟糕的做法)。
2:使用try catch块实际上是以你认为合适的方式处理异常!打印出用于调试的stacktrace,或者给用户一个新的提示来重新输入一些东西。(例如,提示用户需要输入文件位置,然后抛出< code > FileNotFoundException )
希望这有帮助!
我正在实现自定义'AuthenticationProvider'。如果没有经过身份验证,我将在'authenticate'函数中抛出异常,如下所示。 我有全局异常处理程序,如下所示。 当在'authenticate'函数内部引发异常时,不会调用全局异常处理程序。对于所有其他例外情况,它正在被调用。我想在全局异常处理程序中捕获异常并返回自定义错误消息。我怎么能那样做?感谢任何帮助。提前道谢。
无法在中包装流对象。 我试过这样: Eclipse开始抱怨在下划线,并建议它需要用try/catch包围
问题内容: 我想知道其他SOer在实践中如何倾向于处理和/或防止异常。 您在什么情况下可以防止例外情况,以及如何防止例外情况?在什么情况下您会捕获异常? 通常,我通常会说“ NullPointerExceptions”(和其他类似的事件) 我发现在大多数情况下,这比使用try-catch块所涉及的所有事情要小。 当潜在异常更复杂或数量更多时,我使用try-catch块。 问题答案: 我认为,仅当引
每当我的VNC连接被终止时(每当我重新启动VM时),我都试图捕捉一个异常,并且我试图忽略它以继续我的Jython脚本。我不知道如何编写try catch语句来捕获异常,因为它起源于Java。这是一个sikuliX脚本。
本节介绍如何使用三个异常处理程序组件(try、catch 和 finally)来编写异常处理程序。 然后,介绍了 Java SE 7中引入的 try-with-resources 语句。 try-with-resources 语句特别适合于使用Closeable的资源(例如流)的情况。 本节的最后一部分将通过一个示例来分析在各种情况下发生的情况。 以下示例定义并实现了一个名为ListOfNumbe