Cursor.Current = Cursors.WaitCursor;
try {
. . .
} finally {
Cursor.Current = Cursors.Default;
}
或本:
try {
Cursor.Current = Cursors.WaitCursor;
. . .
} finally {
Cursor.Current = Cursors.Default;
}
?
Cursor.Current = Cursors.WaitCursor;
try {
. . .
} finally {
Cursor.Current = Cursors.Default;
}
或本:
try {
Cursor.Current = Cursors.WaitCursor;
. . .
} finally {
Cursor.Current = Cursors.Default;
}
?
有在把try塊內第一光標分配沒有壞處。正如其他人所指出的那樣,如果您確實知道賦值永遠不會拋出異常,那麼它並不一定需要放在try塊中。如果你不確定,最好把它放在try塊中。
作爲一般的編碼模式,如果您不確定某個語句是否可以拋出異常,請將其放入try塊中。最好把它放在try塊中,而不是需要它,而不是假設/猜錯,當你真的需要它時,把它放在try塊之外。
問問自己,該行的結果是否會引發異常?在這種簡單的情況下,只要當且僅當拋出任何異常時,纔會返回到finally子句中的正常狀態。就個人而言,我不會拋出那條線Cursor.Current = Cursors.WaitCursor
,因爲這不會拋出異常(你只是在做一個任務)。
這兩種方法之間沒有區別,因爲將預定義的光標分配給Cursor.Current
不會引發異常。如果您正在從資源文件加載遊標,則該操作實際上可能會引發異常(例如,如果未找到指定的資源)。
重要的是將光標設置爲finally
塊中的所需狀態,您在兩個示例中都執行此操作。
如果你把它放在裏面沒有關係,除非它會拋出異常。
如果它確實會拋出異常,那麼您應該只處理它在catch
塊中拋出的特定類型的異常,或者在程序退出前使用finally
塊處理最終安排並釋放資源。
這裏有一些好的信息,爲您在讀了起來:http://msdn.microsoft.com/en-us/library/ms173160.aspx
您不處理finally塊中的特定異常。 – dthorpe
我會在嘗試之前放置Cursor setter。原因是你的try/finally方法確保try-block中的代碼不會影響Cursor,如果它拋出異常的話。然而,你並沒有試圖防止來自Cursor屬性本身的錯誤。如果出現錯誤,那麼您需要單獨處理它,或者讓它導致一個未處理的異常,從而將應用程序拆除。你最不希望發生的事情是將Cursor設置爲拋出一個異常,只是爲了在你的finally塊中再次設置異常時纔得到另一個異常:你只會在崩潰報告中看到第二個異常,並且可能會將錯誤發送給你當你去調試它時,會浪費你很多時間。
你爲什麼要把它放在try裏面,它不會拋出異常嗎? – JonH
建議(微軟認證考試70-536自學軟件套裝書)除了簡單無害的東西(如聲明)之外的所有代碼都放在try-catch模塊中,並確定可能無害或不會造成錯誤決策的風險,爲了安全起見,如果您不確定是否可以拋出異常,可以將它放在try-catch塊中。 –
nop。沒有例外。 –
Batuu