如何为两个函数抛出异常

时间:2012-12-11 06:57:14

标签: c#

我有两个功能。如果通过异常FunB的FunA不执行。我在FunA代码中放置了Try catch,如果异常槽FunA()显示FunA异常。但它没有发生。怎么做到这一点?

try
{
   FUNA();
   FUNB(); 
}
catch (Exception exp)
{ 
   System.Console.WriteLine("Error has occurred during processing:\n" + exp.ToString());
}

2 个答案:

答案 0 :(得分:4)

编辑:刚刚注意到这一点:

  

我在FunA代码中放置了Try catch,如果异常低谷FunA()显示FunA异常。

好吧,您还没有显示FunA代码。您已经显示了调用的代码 FunA。如果您的FunA方法确实try块中有违规的代码段,并且有一个合适的catch块,而没有重新抛出,那么异常不应该传播(除非它是ThreadAbortException,但这有点特别。)

但是否则,FunB将无法执行。这就是try / catch的工作原理 - 当抛出异常时,执行流程离开try块,并且不会返回到它停止的位置。如果确实想要执行FunB即使FunA失败,您还需要在 catch块后调用:< / p>

try
{
    FunA();
}
catch (IOException e) // Or whatever specific exception you want...
{
    // Logging here... or possibly returning, or rethrowing in some cases
}
FunB();

请注意我是如何在此处捕获特定的异常的。除了在一个逻辑操作的顶层(例如,Web请求或用户启动的操作)之外,您几乎不应该只捕获Exception。你可以真正处理的情况可能会相对较少(例如你可以纠正的情况),并且你无法处理的例外情况很多......所以在这种情况下你不应该继续。

显然你也可以将FunB放在try / catch语句中。

答案 1 :(得分:0)

如果我正确地解释了这个:

  

我在FunA代码中放置了Try catch,如果异常低谷FunA()   显示FunA例外。

然后你可能需要在捕获它之后在FunA()中重新抛出异常吗?

打印后,只需在FunA() catch块内添加:

throw;