是否有可能在catch块中出现异常? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否有可能在catch块中出现异常? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

catch块中是否有可能发生异常?如果是,那么我该如何处理呢?

答案

可以在catch块中抛出异常,但它很少见,或者至少它应该是。显然这取决于你放在catch块中的内容。

您最好的保护是避免在catch语句中使用大量代码,并且只包含不太可能抛出另一个异常的“安全”代码。

请记住,代码的“正常”流程中的任何内容都不会因为异常而发生,所以在大多数情况下,除了日志记录或其他重要内容之外,您的catch中除了之外没有任何内容。如果你在catch中有一大堆应用程序代码,它可能不应该存在。

如果你必须在你的catch做一些事情有一个深刻的,已知的原因,它可能会抛出另一个例外,你可以在你的try/catch中放入另一个catch。它确实发生了 - 它并非闻所未闻 - 但它并不常见。

如果你必须在你的catch中调用一些其他方法,那么知道它是否可能抛出异常是很好的。熟悉日志记录并确保它不会抛出另一个异常并不会有什么坏处。或者,如果它是一些.NET Framework方法,文档通常会告诉您它抛出的异常,以及原因。

就像一个随机的例子,看看RemoveDictionary<TKey, TValue>方法的文档:

例外

Exception               Condition   

ArgumentNullException   key is null 

然后它告诉你,如果你想知道,如果你试图删除一个不存在的密钥会发生什么。

如果Dictionary不包含具有指定键的元素,则Dictionary保持不变。没有异常被抛出。

熟悉在线文档中的内容可能非常有用,包括方法抛出的异常等详细信息。

以上是关于是否有可能在catch块中出现异常? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

动手动脑-异常处理

php异常处理

异常处理(动手动脑)

Java中的异常处理try catch(第八周课堂示例总结)

如果在 catch 块中抛出异常,是不是会执行 finally 块? [复制]

第八周动手动脑