我有两个功能。如果通过异常FunB的FunA不执行。我在FunA代码中放置了Try catch,如果异常槽FunA()显示FunA异常。但它没有发生。怎么做到这一点?
try
{
FUNA();
FUNB();
}
catch (Exception exp)
{
System.Console.WriteLine("Error has occurred during processing:\n" + exp.ToString());
}
答案 0 :(得分:4)
我在FunA代码中放置了Try catch,如果异常低谷FunA()显示FunA异常。
好吧,您还没有显示FunA
代码。您已经显示了调用的代码 FunA
。如果您的FunA
方法确实在try
块中有违规的代码段,并且有一个合适的catch
块,而没有重新抛出,那么异常不应该传播(除非它是ThreadAbortException
,但这有点特别。)
但是否则, 请注意我是如何在此处捕获特定的异常的。除了在一个逻辑操作的顶层(例如,Web请求或用户启动的操作)之外,您几乎不应该只捕获 显然你也可以将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();
Exception
。你可以真正处理的情况可能会相对较少(例如你可以纠正的情况),并且你无法处理的例外情况很多......所以在这种情况下你不应该继续。FunB
放在try / catch语句中。
答案 1 :(得分:0)
如果我正确地解释了这个:
我在FunA代码中放置了Try catch,如果异常低谷FunA() 显示FunA例外。
然后你可能需要在捕获它之后在FunA()
中重新抛出异常吗?
打印后,只需在FunA()
catch块内添加:
throw;