亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++怎么使用異常發信號

發布時間:2021-11-25 15:47:35 來源:億速云 閱讀:219 作者:iii 欄目:大數據

這篇文章主要講解了“C++怎么使用異常發信號”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++怎么使用異常發信號”吧!

如果必要任務失敗了,使用異常發信號

Reason(原因)

It should not be possible to ignore an error because that could leave the system or a computation in an undefined (or unexpected) state. This is a major source of errors.

錯誤可能會讓系統或計算處于沒有定義(或者意外)的狀態,應該杜絕錯誤被忽略的可能性。忽略對錯誤的處理是大部分問題的主要原因。

Example(示例)

int printf(const char* ...);    // bad: return negative number if output fails
template <class F, class ...Args>// good: throw system_error if unable to start the new threadexplicit thread(F&& f, Args&&... args);
Note(注意)

What is an error?

什么是錯誤?

錯誤意味著功能無法達成它對外宣稱的目的(包括建立事后條件)。忽略錯誤的調用代碼可能造成錯誤的結果或者沒有定義的系統狀態。例如,無法連接到遠程服務器不是它自己造成的錯誤:服務器可能因為各種原因拒絕連接,因此自然的做法就是返回一個結果讓調用者確認。如果無法連接被認為是錯誤,這個失敗應該拋出異常。

Exception(異常)

Many traditional interface functions (e.g., UNIX signal handlers) use error codes (e.g., errno) to report what are really status codes, rather than errors. You don't have a good alternative to using such, so calling these does not violate the rule.

很多傳統的函數(例如UNIX信號量處理函數)使用錯誤碼(例如errno)報告實際的狀態。由于沒有好的選項來代替它們,因此調用這些函數不算違反規則。

Alternative(可選項)

If you can't use exceptions (e.g., because your code is full of old-style raw-pointer use or because there are hard-real-time constraints), consider using a style that returns a pair of values:

如果不能使用異常(例如,因為代碼到處都是舊風格的原始指針,或者存在硬實時約束),考慮使用返回結果對的風格。

int val;int error_code;tie(val, error_code) = do_something();if (error_code) {    // ... handle the error or exit ...}
// ... use val ...

譯者注:tie是C++引入的新特性,用于解包同樣是C++11引入的tuple數據。

This style unfortunately leads to uninitialized variables. Since C++17 the "structured bindings" feature can be used to initialize variables directly from the return value:

這個方式有一個缺點就是會導致未初始化變量。使用C++17之后導入的結構化綁定功能可以通過返回值直接初始化變量。

auto [val, error_code] = do_something();if (error_code) {    // ... handle the error or exit ...}// ... use val ...

Note(注意)

We don't consider "performance" a valid reason not to use exceptions.

我們不認為“性能”是不使用異常的合理原因。

  • Often, explicit error checking and handling consume as much time and space as exception handling.

    通常,清楚的錯誤檢查和處理消耗的時間和空間和異常處理相同(譯者注:換個說法,目前很多代碼中所謂高效率錯誤處理實際上是偷工減料)

  • Often, cleaner code yields better performance with exceptions (simplifying the tracing of paths through the program and their optimization).

    通常,整潔的代碼使用異常會帶來更好的性能(簡化跟蹤程序執行路徑和優化)

  • A good rule for performance critical code is to move checking outside the critical part of the code (checking).

       對于性能敏感的代碼來說,將檢查部分移到代碼的關鍵部分之外是一個好方法。

  • In the longer term, more regular code gets better optimized.

    長期來說,有規律的代碼可以被更好地優化。

  • Always carefully measure before making performance claims.

    在宣稱性能問題之前一定要仔細地考量。(譯者注:例如真的會有性能問題么?真的那么重要么?)

Enforcement(實施建議)

  • (Not enforceable) This is a philosophical guideline that is infeasible to check directly.

    (非強制)這是一條事關編程哲學的準則,無法直接檢查。

  • Look for errno.

    選擇errno。

感謝各位的閱讀,以上就是“C++怎么使用異常發信號”的內容了,經過本文的學習后,相信大家對C++怎么使用異常發信號這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

布拖县| 恭城| 樟树市| 蒙山县| 郁南县| 阜平县| 武清区| 印江| 婺源县| 交口县| 高台县| 郯城县| 五峰| 万宁市| 灵寿县| 武宁县| 黎平县| 徐水县| 兰西县| 蓝山县| 前郭尔| 中超| 上犹县| 开封县| 莱阳市| 曲阜市| 永州市| 仁化县| 湘阴县| 临沭县| 教育| 碌曲县| 汝南县| 阿巴嘎旗| 灵寿县| 咸丰县| 丰镇市| 雷州市| 偏关县| 定安县| 保定市|