寫C 何時應該捕捉異常?

時間 2021-05-07 11:04:25

1樓:林劍宇

C++通常情況下,不建議捕獲異常,開銷太大。真的遇到異常,應該繼續上拋,直接讓服務掛掉。

需要處理的異常通常是大塊記憶體申請,此時判斷返回指標是否為nullptr就行。

預設原則應該是小塊記憶體申請肯定成功,大塊記憶體申請檢查返回值。

如果使用第三方介面,說明中明確要求捕獲異常,而且這個異常可以通過程式內部處理的,可以捕獲異常並處理,其他情況也不建議捕獲。

2樓:樓主別編故事裝逼了

我從來不用異常,全部用返回值表達錯誤碼。

唯一需要用到異常的地方可能就是建構函式丟擲異常的情況。

但絕不在建構函式中人為丟擲異常,需要判斷初始化結果的東西,全部另外寫乙個init來完成。

我寧願構造完了,手動呼叫init都行。

其他異常,就不管了,直接崩潰最好

3樓:向陽

異常這個東西吧...先說觀點,拒絕try...catch,盡情崩掉吧!

C++裡面能出異常基本意味著完蛋了,比如new時候的bad_alloc。所以什麼都拯救不了,換句話說,可以極端的乙個try..catch都不用,既然完蛋了,那就盡情崩掉吧!

其次,除去建構函式出問題,try...catch真的有必要嗎?這是我們寫程式應該思考的。

try...catch太多,只會讓問題都莫名其妙被catch了,然後得到乙個執行在華麗外表下的程式。

異常,意料之外的東西才叫異常,比如記憶體沒了,遞迴把棧壓爆了,正常情況比如檔案開啟失敗,這玩意得叫錯誤、叫問題,不是意料之外的

另外,題主又怎麼知道那些沒有noexcept的方法會丟擲什麼異常呢?(笑)

4樓:

如果你知道怎麼處理這個異常,就捕獲。

比如讀乙個配置檔案,如果檔案沒有許可權,使用預設配置,就捕獲。

不能使用預設配置,就讓程式掛掉。

同理,陣列越界,記憶體不夠等等,都是沒有辦法處理的異常。

何時應該用Dojo Ext?何時應該用Backbone Angular?

空空 Backbone,dojo 不熟悉。我angular和extjs 都做過。extjs 5出來後,其實吸收了很多流行前端框架的優點。我覺得如果你的需求有很多rich gui widget,接近企業級介面的話,用extjs 開發會更快。用angular 可能需要定製很多會降低開發的效率。另外 an...

C 秒錶怎麼寫?

HumJ 沒詳細需求了?using System Console.ReadKey var t0 DateTime.Now Console.ReadKey Console.WriteLine DateTime.Now t0 旋鈕 System.Windows.Forms.Timer的精度是55ms,如...

能用C語言寫嗎嗎 怎麼寫?

勝勳 這個問題並沒有看上去那麼簡單 腳印,也要分 左腳 和 右腳 爸爸的左腳腳印 和 兒子的右腳腳印 不可能重疊 爸爸的右腳腳印 和 兒子的左腳腳印 不可能重疊 爸爸的左腳腳印 和 兒子的左腳腳印 看似有可能重疊,但其實不能,第一步相差10cm,之後每週期相差20cm的整數倍,所以不能重疊 爸爸的右...