catch块中的return语句

时间:2010-03-03 17:39:36

标签: .net exception-handling return catch-block

我见过一些开发人员在catch块中使用return语句。为什么/什么时候这是一种有用的技术?

编辑:我实际上只是看到了正在使用的return关键字。

由于

6 个答案:

答案 0 :(得分:7)

有时您不关心抛出的异常,只有Try操作失败。一个例子是TryParse函数,它们在pseduo代码中看起来像:

try
{
   //attempt conversion
   return true;
}
catch
{
   return false;
}

答案 1 :(得分:1)

如果您知道函数的返回值应该在catch块中,那将非常有用。

示例:

public bool IsDatabaseAvailable() {
    try {
        // connect
        return true;
    }
    catch (Exception) {
        return false;
    }
    finally {
        // clean up
    }
}

答案 2 :(得分:1)

您可能希望捕获错误,记录错误并返回值false,表示函数是否成功。在其他情况下,您可能希望返回一些在try块中计算的数据

答案 3 :(得分:1)

.Net Framework中的某些方法在没有良好的格式时会抛出异常。

一个很好的例子是int.TryParse(object value)

如果您的值为“10s”,则会抛出异常。在这种情况下,我们知道这是因为转换无效。

所以

try 
{ 
    int.TryParse(value);
    return true; 
}
catch { return false; }

可以是一个函数,它告诉我们字符串是否是有效的整数。

如果您确实使用该表单,请不要执行catch(Exception ex),因为这样做会强制.Net序列化对象内部的错误,这有点慢。

同样重要的是要记住,即使你在try catch块中使用return,它仍然会执行finally块。

因此,如果您的cleaup代码在最终内部,请不要担心框架将确保调用它。

我的2美分。 Ñ

答案 4 :(得分:1)

public void Function() {

try 
{ 
    //some code here
}
catch
{ 
    return;
}

}

何时返回;被击中,执行流程跳出函数。这只能在void方法上完成。

编辑:如果您不想执行其余功能,请执行此操作。例如,如果您正在执行文件IO并且发生读取错误,则您不希望执行处理该文件中的数据的代码,因为您没有它。

答案 5 :(得分:0)

如果尝试失败,您可以选择其他任何情况。 一个示例可能是检查某些file

是否有operation可用
    bool IsComplete = false;

    try
    {
      //  FileStream currentWriteableFile = 
                     File.OpenWrite(sFileLocation);          
    }
    catch(Exception)
    {
      return false;
    }