是否有可能在catch块中出现异常?

时间:2017-12-18 18:53:34

标签: c# exception-handling try-catch

catch块中是否有可能发生异常?如果是,那么在那种情况下如何处理?

1 个答案:

答案 0 :(得分:1)

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

最好的保护措施是避免在catch语句中使用大量代码,并且只包含“安全”代码,这些代码可能可能会引发另一个异常。

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

如果您必须在catch中执行某些操作,并且知道可能引发其他异常的原因,那么您可以在try/catch内添加另一个catch。它确实发生了 - 它并非闻所未闻 - 但它并不常见。

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

就像一个随机的例子,请查看Dictionary<TKey, TValue>的{​​{3}}方法的文档:

<强>例外

Exception               Condition   

ArgumentNullException   key is null 

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

  

如果Dictionary不包含具有指定键的元素,则Dictionary保持不变。没有例外。

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