C# 子程序调用子程序的异常处理

C# 子程序调用子程序的异常处理,c#,exception-handling,C#,Exception Handling,我有一个方法,它有一个子程序,它再次调用一个子程序。最后一个子程序可能引发异常。谁负责捕获异常?或者谁能够捕捉到异常 那么,异常是否会在调用堆栈中传递,直到方法捕获它们?还是只有调用方法负责捕获子程序的异常?全部3 每个程序都应该处理自己的错误,如果有任何程序依赖于另一个程序,那么它们应该确保它们不会因为该依赖中发生的错误而崩溃 可以说,最重要的是程序处理自己的错误,因为它也可以在其他程序中使用 您的主方法不需要担心最终程序崩溃的原因(“sub-sub方法”),它只需要知道子方法崩溃的原因。如

我有一个方法,它有一个子程序,它再次调用一个子程序。最后一个子程序可能引发异常。谁负责捕获异常?或者谁能够捕捉到异常

那么,异常是否会在调用堆栈中传递,直到方法捕获它们?还是只有调用方法负责捕获子程序的异常?

全部3

每个程序都应该处理自己的错误,如果有任何程序依赖于另一个程序,那么它们应该确保它们不会因为该依赖中发生的错误而崩溃

可以说,最重要的是程序处理自己的错误,因为它也可以在其他程序中使用


您的主方法不需要担心最终程序崩溃的原因(“sub-sub方法”),它只需要知道子方法崩溃的原因。如果出于某种原因,它确实很重要,那么最终程序崩溃的原因可能取决于您首先传入的不同参数。最后一个程序会说它崩溃是因为X,中间程序应该注意这一点,发现它是因为第一个程序的参数Y,并且只报告给第一个程序(根据需要)


您需要避免在最终程序和第一个程序之间创建依赖关系,因为这将导致最终程序更新时的维护噩梦。

我的主方法是否可以捕获sub-sub方法的异常?不必如此,您描述的子方法应该已经处理了它,您只需要担心您自己的直接依赖关系,以及它们在您自己的程序中的交互(“照顾#1”),您如何才能找到主方法异常的原因?一直重复播放还是在内部异常中使用?但是,如果你在层次结构中有三个步骤——应该如何管理?@grabner——很难给出一个具体的答案,但是你的最终程序应该告诉第二个程序崩溃的原因,然后根据这些信息,第二个程序需要告诉第一个程序发生了什么。这可能最终是同一条信息,但并不总是如此。你只需要关心你的直接关系dependencies@grabner-如果这是描述您所需信息的最佳方式,那么是的,但最重要的是,确保您只对中间程序的响应感兴趣,而不是最终的响应(可能是相同的响应)。