在最近的采访中,采访者在C#中问我以下问题。
假设我们有5种方法m1,m2,m3,m4,m5和m1调用m2,m2调用m3,依此类推。但是当m5中发生异常时我们必须捕获m4,当m4中发生异常时我们必须捕获m3,依此类推。首先,我认为这很简单,只需在所有方法中包含try-catch块,除了最后一个方法m5。但在几秒钟内,我明白这个解决方案是行不通的。
public static void m1()
{
try
{
m2();
}
catch(Exception ex)
{
Console.WriteLine("From Catch m1");
}
}
public static void m2()
{
try
{
m3();
}
catch (Exception ex)
{
Console.WriteLine("From Catch m2");
}
}
public static void m3()
{
try
{
m4();
}
catch (Exception ex)
{
Console.WriteLine("From Catch m3");
}
}
public static void m4()
{
try
{
m5();
}
catch (Exception ex)
{
Console.WriteLine("From Catch m4");
}
}
public static void m5()
{
int i = 0;
Console.WriteLine(50 / i);
}
我也试过很多方法,在网上搜索但找不到合适的解决方案。请建议正确的方法来执行此功能。