在函数中使用try-catch块

时间:2010-10-20 04:30:11

标签: c# .net syntax

这确实不是一个重要的问题。我只是想知道哪种方法更受欢迎,以及是否存在某种事实上的标准。

此,

function foobar
{
    int retVal = 0;
    try
    {
        retVal+=100;
    }
    catch 
    {
        //error handling code
    }
    return retVal;
}

还是这个?

function foobar
{
    try
    {
        return 100;
    }
    catch 
    {
        //error handling code
    }
    return 0;
}

6 个答案:

答案 0 :(得分:3)

不幸的是,这很大程度上取决于您期望发生的异常,并且如果异常发生,函数应返回默认值。

这也会受到函数本身的影响,正如我在较小的实用函数中发现的那样,它易于阅读并查看函数返回的位置以及它将返回的内容,因为它有时更适用于具有多个函数的函数。一个返回点,因为业务逻辑/正常逻辑会使这更容易理解。

所以两者都可以接受......

答案 1 :(得分:3)

这实际上取决于功能的作用。当函数需要通过一些操作来构造返回值时,使用retVal变量很有用。如果返回值比原始值更大,那么我就不会为额外的变量而烦恼。

答案 2 :(得分:0)

这个问题与try catch没有多大关系,因为它与编码样式有关。在第一个选项中,您只有该函数的返回路径,而在第二个选项中您有许多。

除了编码样式之外,在多于一个返回路径的情况下,您仍然可以看到第一个选项,但这取决于相关代码。

我尽量避免使用多个函数的返回路径。我发现我的团队更容易阅读(他们也这样做,因为它是我们指南的一部分)。

答案 3 :(得分:0)

最简单的返回是安全的,因为如果你有一个 finally 块或其他一些东西需要清理,过早返回可能会导致错误。

答案 4 :(得分:0)

如果try catch有几个会影响返回值的进程,那么第一个是我的选择。如果你想返回一个恒定值,第二个就适合。

答案 5 :(得分:0)

我觉得这更具可读性(把回车放在catch块中):

function foobar
{
    try
    {
        return 100;
    }
    catch 
    {
        //error handling code
        return 0;
    }
}