我有两种方法:method1()
和method2()
。
每种方法都可以创建异常(WebException
)。
我在此方法中methodMain()
执行第一个方法是method1()
,我执行method2()
。
例如:
public void methodMain()
{
...
try
{
method1();
method2();
}
catch (WebException e)
{
//do something
}
...
}
如果我从method1()
获得例外,则method2()
未执行。
如果在第一种方法中出现异常,我如何执行所有方法?
我提出了解决方案:
public void methodMain()
{
...
try
{
method1();
}
catch (WebException e)
{
//do something
}
...
try
{
method2();
}
catch (WebException e)
{
//do something
}
...
}
我认为我的解决方案不好而且不漂亮。
我的问题:如果我在第一种方法中遇到异常,如何执行所有方法?
答案 0 :(得分:2)
将这些方法包装在委托中并执行它。您可以向actions
数组添加任意数量的方法并循环执行。
public void methodMain()
{
Action[] actions = new Action[]
{
method1,
method2
};
foreach(var method in actions)
{
try
{
method();
}
catch (WebException e)
{
//do something
}
}
}
答案 1 :(得分:1)
你有两种选择;要么在单独的method1
块中将调用分开到method2
和try-catch
,要么将try-catch
移到两个方法的内部。
哪个选项最好取决于方法的作用以及调用它们的位置。如果您只想在此methodMain
- 方法中处理/吞下异常,那么这是正确的解决方案。但是,如果您想忽略各处的异常,那么我建议您将try-catch
块移到两个方法的内部。