TryCatch与TryParse的优缺点

Vij*_*esh 11 .net c# try-catch tryparse

使用以下任一方法从对象中拉出双精度的优缺点是什么?除了个人偏好之外,我正在寻找反馈的问题包括易于调试,性能,可维护性等.

public static double GetDouble(object input, double defaultVal)
{
    try
    {
        return Convert.ToDouble(input);
     }
     catch
     {
        return defaultVal;
     }
}

public static double GetDouble(object input, double defaultVal)
{
    double returnVal;
    if (double.TryParse(input.ToString(), out returnVal))
    {
        return returnVal;
    }
else
    {
        return defaultVal;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 19

  • TryParse 将比捕获异常更快
  • TryParse表示预期的事情- 这里没有例外,只是你怀疑你的数据可能无效.
  • TryParse 没有对正常控制流使用异常处理

基本上,去TryParse:)

顺便说一下,您的代码可以重写为:

public static double GetDouble(object input, double defaultVal)
{
    double parsed;
    return double.TryParse(input.ToString(), out parsed)) ? parsed : defaultVal;
}
Run Code Online (Sandbox Code Playgroud)

  • TryParse转换为String(实际上是char*),尝试将该字符串解析为Number(通过字符比较),然后执行各种其他检查(范围等)以确保Number是正确的类型.它周围没有try catch块:) (3认同)