我需要一个接一个地执行很多语句,并且我需要当单个语句引发异常时,程序流继续执行下一个语句,例如:
double a = Double.Parse("2.5");
double b = Double.Parse("ADFBBG");
Geometry g = Geometry.Parse("M150,0L75,200 225,200z");
所有语句都必须执行,所以我需要一种级联的 try-catch 块:
double a, b;
Geometry g;
try
{
a = Double.Parse("2.5");
}
catch
{}
try
{
b = Double.Parse("ADFBBG");
}
catch
{}
try
{
g = Geometry.Parse("M150,0L75,200 225,200z");
}
catch
{}
显然,这不是编写我的程序的最优雅的方式。有没有更好的方法(更优雅,不会显着降低性能)?
我尝试Func<TResult>
以这种方式使用委托:
我写了以下方法:
T Try<T>(Func<T> func)
{
try
{
return func();
}
catch
{
return default(T);
}
}
所以我可以这样使用它:
double x = Try(() => Double.Parse("77"));
Geometry g = Try(() => Geometry.Parse("M150,0L75,200 225,200z"));
其他解决方案?