2011-05-29 40 views
0

異常處理:他們實際上做了什麼。異常處理:含義和語義

考慮一下我正在讀取文件以進行輸入的場景,並且我想將try/catch文件在try/catch子句中打開並讀取代碼。 如果讀取文件時出現錯誤(文件不存在等),會發生什麼情況。代碼進入catch塊,但我應該放在那裏。

catch塊的用途是什麼,catch塊是否會暫停程序的正常運行,並且程序在catch塊之後是否存在?

在此先感謝您清除這些疑惑!

+1

用什麼語言? – 2011-05-29 04:16:39

+0

在大多數語言中,他們的意思不一樣嗎?無論如何在Java,C++和Python – 2011-05-29 04:17:37

回答

0

既然你沒有提供特定的語言,我只是想作爲一個普遍的概念來回答。

當發生異常時,代碼將跳轉到catch塊,跳過異常和catch塊之間的所有代碼。

對於你應該把什麼放在捕獲物中沒有一般的答案。這完全取決於你的具體情況。您經常想要在某處記錄錯誤,然後採取適當的措施。什麼是「適當的行動」可以有很大的不同。如果失敗的代碼是由用戶啓動的,那麼您會想要向用戶返回一些錯誤消息。如果是某種夜間工作,您可能需要發送電子郵件提醒有人出現問題等。

+0

我也看到了OutofBounds異常。這個異常是否意味着我們試圖訪問數組的錯誤索引。這並不意味着代碼有問題,因爲如果在那裏寫得不恰當,應該不會引發異常的異常 – 2011-05-29 04:30:45

+0

再次,不確定我們在這裏討論的是哪種語言,但是,是的,OutOfBounds意味着您嘗試訪問超出數組邊界的數組。假設你的數組有3個元素,並且你試圖訪問第5個元素,這會拋出這個異常。一般來說,這是由代碼寫得不好造成的。 – 2011-05-29 04:35:45

+0

OK讓放大到C++下面給出一個具體的例子(這個例子從一個異常處理教程拍攝) 嘗試{// 這裏代碼 } 趕上(INT PARAM){COUT <<「INT例外」; } catch(char param){cout <<「char exception」;} catch(...){cout <<「default exception」;} } 這裏我所看到的所有在catch塊中打印stdout發生錯誤。這就是我們在異常處理中應該做的事情(捕獲錯誤和打印錯誤消息,並釋放任何獲取的資源) – 2011-05-29 04:49:08