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;
}
}
如您所见,这些方法都具有相同的作用,但是第一个方法要短三行。
答案 0 :(得分:0)
引发异常的一个很好的理由是,有时最好将决定如何处理异常的决定留给调用代码。例如,假设您具有以下方法。
public static int CalculateArea(int length, int width)
{
if (length < 0 || width < 0)
{
throw new InvalidInputException()
}
// More code here
}
在用户传递长度和宽度的工作流中调用此方法时,您可能想捕获错误,显示错误消息,然后让用户再次输入长度和宽度。在另一个调用CalculateArea方法的位置时,您可能不希望处理异常,或者仅对区域使用0。