真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++怎么使用異常發(fā)信號

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

我們提供的服務有:成都網(wǎng)站設計、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、武川ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術(shù)的武川網(wǎng)站制作公司

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

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.

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

Example(示例)

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

What is an error?

什么是錯誤?

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

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.

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

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:

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

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數(shù)據(jù)。

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之后導入的結(jié)構(gòu)化綁定功能可以通過返回值直接初始化變量。

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).

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

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

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

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

    長期來說,有規(guī)律的代碼可以被更好地優(yōu)化。

  • Always carefully measure before making performance claims.

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

Enforcement(實施建議)

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

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

  • Look for errno.

    選擇errno。

感謝各位的閱讀,以上就是“C++怎么使用異常發(fā)信號”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對C++怎么使用異常發(fā)信號這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


文章題目:C++怎么使用異常發(fā)信號
瀏覽地址:http://weahome.cn/article/jiohod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部