我需要依次执行大量语句,并且当单个语句抛出异常时,需要程序流继续执行下一个语句,例如:
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委托来实现,如下所示:
我编写了以下方法:
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"));
其他解决方案?
TryParse
的答案。 :-) - John Saunders