gpt4 book ai didi

architecture - 为什么最好在调用堆栈中捕获异常,而不是尽快处理?

转载 作者:行者123 更新时间:2023-12-04 15:03:53 24 4
gpt4 key购买 nike

我在几个地方读到,最好在调用堆栈中捕获更高的异常,但我无法找到此语句的理由。

Scott Hanselman :Remember that Application_Error exists. Catch exceptions as high as you can, not as low.

我认为应该在可以处理的地方捕获异常,高低无关紧要。这不是真的吗?如果不是,那为什么?

如果可能,请在答案中添加示例。

谢谢

最佳答案

您应该在代码中可以对其进行处理的地方捕获异常。通常,生成异常的代码无法处理问题,但调用该代码的方法或调用该代码的方法的方法可以优雅地处理问题。

假设你有一些代码试图打开一个文件并读取一些数据,如果文件不存在,它会生成一个异常。该范围内的代码除了保释之外别无他法,但调用堆栈的几个帧可能会说“哦,好吧,有一个异常。我将尝试使用这个替代文件”或“我猜那个文件没有”不存在,所以我会继续创建一个新的。”

这确实是异常的一大好处:它们使开发人员不必立即处理所有可能的错误情况。您可以在编写代码时期望它在大部分时间都能正常工作,并且您的代码不需要被大量错误处理弄得乱七八糟。只要您公布可能抛出哪些异常,您就可以使调用堆栈中更高层的代码以适合该代码尝试执行的任何操作的方式处理问题。

关于architecture - 为什么最好在调用堆栈中捕获异常,而不是尽快处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5451472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com