知乎上看到一些人評價c 的exception很難用,想問一下大家寫c 時怎麼處理錯誤?

時間 2021-05-31 22:00:06

1樓:胡宇光

已經有人回答了很多。我補充幾點。有些環境下異常處理不好要求完全控制流程和從錯誤中恢復錯誤的場景。

這有點類似於0mq作者所說的。但我說的這種場景不一樣,我說的是系統已經很糟糕,各種鉤子各種登錄檔或檔案缺失,對,我說的就是安全軟體或者系統修復之類的場景。除此之外,普通程式設計師抵制異常通常是因為對異常缺乏理解。

高階程式設計師抵制異常是因為擔心同事缺乏理解。在小團隊或個人專案中,我見到不少高階程式設計師大量的使用並且非常推崇異常。而同樣還是這個高階程式設計師,會在制定公司編碼規範時要求公司開發不使用異常。

2樓:Juanjie Xi

不僅是c++,只要語言支援,又沒有歷史包袱,就積極使用異常。

沒有異常的幫忙,連函式的連續呼叫都做不到,還能不能好好寫程式了。

3樓:scottcgi

錯誤有兩種。

一種是非執行時的,只能在開發階段出現的。這需要讓程式掛掉,解決掉問題才能繼續執行。程式真正執行的時候是不能有這種情況的。

這裡就是用斷言的地方。判斷清楚在什麼時候使用斷言而不是返回錯誤提示很重要。一般我覺得,使用斷言的地方,就是沒有什麼好講的了,不應該不對,必須要對,錯了必須改的地方,或者你覺得錯了很low逼的問題。

一種是執行時的。這種錯誤是可預見的,是被邏輯判斷預先捕捉到的。比如資源錯誤,各種等待超時,資料錯誤等。

這需要給出提示,然後能繼續執行就繼續,不能的就安全退出。這裡用異常捕捉或返回錯誤碼接著後續處理。

在使用異常捕捉或返回錯誤碼的時候,有個問題需要思考清楚。就是把問題就地處理掉,還是繼續拋到上層,交給函式呼叫者處理。有些情況,函式呼叫者有特殊的處理方式,異常丟擲更好。

有些情況在比較高內聚的模組內的,功能實現和外界依賴關係小的,模組內自己處理掉更好。

4樓:鍾宇騰

Google C++ Style Guide都說不推薦使用C++ Exception。

用返回值也是很方便的,你寫個巨集嘛

#define TRY(func, args...)\do while (0)

用起來很方便的啊

為什麼知乎上一些人說演化論站不住腳

無先生 演化論確實是錯的,但是錯在描述上。演化論是偽科學,演化論才是真科學。給你2個鏈結,你就知道噴演化論的人裡面,有理智的那一部分為毛噴這三個字了。 天狼望星 這世上無論在那裡,都是蠢人占多數。你看在全世界農業 工業 資訊產業 服務業排名第 一 科技實力吊打全球的美國,神創論 智慧型創造論都那麼有...

如何看待知乎上一些人看不起二本學校這種現象?

龍宇 題主不要這麼說,我就認識很多一本的並且智商正常的。你說的秀優越只不過是個別拉低智商水平線的。低智商人群存在於各個層面,不是985211的專利。有很多大家都找不出任何優點的人一樣在秀優越。我不歧視這些人,我也就是個大眾智商,歧視這種人顯得我秀優越,那我不是成了那種人了? 彭偉堯WillPeng ...

為什麼知乎裡會有一些人,看了幾篇內容空洞的推送文章,就認為自己是某方面專家了,然後到處懟人?

百花殘 不只是知乎,其他平台都有,而且知乎的這種人比較少。對於這些人,拉黑即可,因為他們在現實中可能抬不起頭,於是在網上夸夸其談,來獲得別人對他的認同感,以此來平衡他在現實中的不平衡。越是知識淵博的人,就越謙卑。而那些整天看了幾篇文章就到處懟人以顯示自己有優感的人,知識水平肯定不高。畢竟知乎人均98...