[英]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.