如果我在第一个方法中出现异常,如何执行所有方法?
How can I execute all methods if I get exception in the first method?
我有两种方法: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
}
...
}
我觉得我的方案不好也不漂亮
又是我的问题:如果我在第一个方法中出现异常,我该如何执行所有方法?
将这些方法包装在委托中并执行。您可以将任意数量的方法添加到 actions
数组并循环执行。
public void methodMain()
{
Action[] actions = new Action[]
{
method1,
method2
};
foreach(var method in actions)
{
try
{
method();
}
catch (WebException e)
{
//do something
}
}
}
你有两个选择;您可以在单独的 try-catch
块中将对 method1
和 method2
的调用分开,或者将 try-catch
移动到两个方法的内部。
哪个选项最好取决于方法的作用和调用位置。如果您只想在此 methodMain
方法中出现 handle/swallow 异常,那么这是正确的解决方案。但是,如果您想忽略所有地方的异常,那么我建议您将 try-catch
块移动到两种方法的内部。
我有两种方法: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
}
...
}
我觉得我的方案不好也不漂亮
又是我的问题:如果我在第一个方法中出现异常,我该如何执行所有方法?
将这些方法包装在委托中并执行。您可以将任意数量的方法添加到 actions
数组并循环执行。
public void methodMain()
{
Action[] actions = new Action[]
{
method1,
method2
};
foreach(var method in actions)
{
try
{
method();
}
catch (WebException e)
{
//do something
}
}
}
你有两个选择;您可以在单独的 try-catch
块中将对 method1
和 method2
的调用分开,或者将 try-catch
移动到两个方法的内部。
哪个选项最好取决于方法的作用和调用位置。如果您只想在此 methodMain
方法中出现 handle/swallow 异常,那么这是正确的解决方案。但是,如果您想忽略所有地方的异常,那么我建议您将 try-catch
块移动到两种方法的内部。