catch块中是否有可能发生异常?如果是,那么在那种情况下如何处理?
答案 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保持不变。没有例外。
熟悉在线文档中的内容非常有用,包括方法抛出的异常等详细信息。