簡體   English   中英

在函數中使用try-catch塊

[英]Using try-catch block in a function

這確實不是一個重要的問題。 我只是想知道哪種方法更流行,以及是否存在某種事實上的標准。

這個,

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;
}

不幸的是,這在很大程度上取決於您預期會發生的異常,並且如果發生異常,則該函數應返回默認值。

這也將受到函數本身的影響,正如我在較小的實用函數中發現的那樣,它很容易閱讀並查看函數返回的位置以及函數將返回的內容,因為有時它更適用於具有多個返回點的地方因為業務邏輯/普通邏輯會使這一點更容易理解。

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

這實際上取決於函數的功能。 當函數需要經過一些操作來構造返回值時,使用retVal變量很有用。 如果返回值比該值更具原子性,那么我就不會理會額外的變量。

這個問題與try catch無關,與編碼樣式無關。 在第一個選項中,您只有該函數的返回路徑,而在第二個選項中,您有很多。

除了編碼風格外,在返回路徑多的情況下,您可能仍然會看到第一個選項,但這取決於所討論的代碼。

我盡量避免向函數返回一個以上的路徑。 我發現對我的團隊來說更容易閱讀(他們也這樣做,因為它是我們指南的一部分)。

最后簡單地返回是安全的,因為如果您在執行完了finally塊或其他一些清理工作后,過早返回可能會導致錯誤。

如果try catch具有多個會影響返回值的過程,則是我的第一個選擇。 如果要返回一個常數,則適合第二個。

我發現這更具可讀性(將return放入catch塊內):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM