我可以不使用try-catch语句来度过难关吗?

时间:2019-02-05 05:07:07

标签: c#

try-catch语句适用于您知道某些事情可能会失败的原因,但是为什么不先进行检查却又没有机会导致错误呢?抱歉,以前是否有人问过这个问题,但是我找不到有人问这个问题。

int? ConvertToInt(object obj)
{
    if(obj is int)
    {
        return (int)obj;
    }
    return null;
}

int? ConvertToInt(object obj)
{
    try
    {
        return (int)obj;
    }
    catch
    {
        return null;
    }
}

如您所见,这些方法都具有相同的作用,但是第一个方法要短三行。

1 个答案:

答案 0 :(得分:0)

引发异常的一个很好的理由是,有时最好将决定如何处理异常的决定留给调用代码。例如,假设您具有以下方法。

public static int CalculateArea(int length, int width)
{
    if (length < 0 || width < 0)
    {
        throw new InvalidInputException()
    }
    // More code here
}

在用户传递长度和宽度的工作流中调用此方法时,您可能想捕获错误,显示错误消息,然后让用户再次输入长度和宽度。在另一个调用CalculateArea方法的位置时,您可能不希望处理异常,或者仅对区域使用0。