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

问题描述 投票:0回答:1

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

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

c# exception-handling try-catch
1个回答
1
投票

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

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

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

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

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

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

例外

Exception               Condition   

ArgumentNullException   key is null 

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.