最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

了解C++編程中指定的異常和未經(jīng)處理的異常

 更新時(shí)間:2016年01月26日 14:17:03   投稿:goldensun  
這篇文章主要介紹了C++中指定的異常和未經(jīng)處理的異常,介紹了有關(guān)noexcept和terminate的作用,并結(jié)合了C++11標(biāo)準(zhǔn)的新特性,需要的朋友可以參考下

noexcept
C++11:指定函數(shù)是否可能會(huì)引發(fā)異常。
語(yǔ)法

ReturnType FunctionName(params) noexcept;
ReturnType FunctionName(params) noexcept(noexcept(expression);

參數(shù)
表達(dá)式
計(jì)算結(jié)果是 True 或 False 的常量表達(dá)式。無(wú)條件版本相當(dāng)于 noexcept(true)。
備注
noexcept(及其同義詞 noecept(true))指定函數(shù)絕不會(huì)引發(fā)異常,或允許從異常直接或間接調(diào)用的任何其他函數(shù)傳播異常。更具體地說(shuō),noexcept 意味著,僅當(dāng)調(diào)用的所有函數(shù)也為 noexcept 或 const 并且沒(méi)有要求運(yùn)行時(shí)檢查、應(yīng)用于類型為多態(tài)類類型的 glvalue 表達(dá)式的 typeid 表達(dá)式或 throw 表達(dá)式的潛在已評(píng)估轉(zhuǎn)換時(shí),該函數(shù)才是 noexcept。但是,編譯器不一定會(huì)檢查可能歸因于 noexcept 函數(shù)的異常的每個(gè)代碼路徑。如果異常確實(shí)到達(dá)標(biāo)記為 noexcept 的函數(shù),則會(huì)立即調(diào)用 std::terminate,并且不會(huì)保證將調(diào)用任何范圍內(nèi)對(duì)象的析構(gòu)函數(shù)。
使用條件 noexcept 聲明的且計(jì)算結(jié)果為 noexcept(false) 的函數(shù)指定它確實(shí)允許傳播異常。例如,當(dāng)要復(fù)制的對(duì)象是普通的舊數(shù)據(jù)類型 (POD) 時(shí),可將復(fù)制其參數(shù)的函數(shù)聲明為 noexcept。此類函數(shù)可以如下聲明:

#include <type_traits>

template <typename T>
T copy_object(T& obj) noexcept(std::is_pod<T>)
{
 //. . . 
}

使用 noexcept 代替異常說(shuō)明符 throw,后者在 C++11 和更高版本中已棄用。當(dāng)你確信函數(shù)絕不允許異常傳播到調(diào)用堆棧時(shí),我們建議你將 noexcept 應(yīng)用到函數(shù)。使用 noexcept 聲明的函數(shù)使編譯器可以在多種不同的上下文中生成更高效的代碼。

未經(jīng)處理的 C++ 異常
如果無(wú)法找到當(dāng)前異常的匹配處理程序(或省略號(hào) catch 處理程序),則調(diào)用預(yù)定義的 terminate 運(yùn)行時(shí)函數(shù)。(您也可以在任意處理程序中顯式調(diào)用 terminate。)terminate 的默認(rèn)操作是調(diào)用 abort。如果您希望 terminate 在退出應(yīng)用程序之前調(diào)用程序中的某些其他函數(shù),則用被調(diào)用函數(shù)的名稱作為其單個(gè)參數(shù)調(diào)用 set_terminate 函數(shù)。您可以在程序的任何點(diǎn)調(diào)用 set_terminate。 terminate 例程總是調(diào)用指定為 set_terminate 的參數(shù)的最后一個(gè)函數(shù)。
以下示例引發(fā) char * 異常,但不包含用于捕獲類型 char * 的異常的指定處理程序。對(duì) set_terminate 的調(diào)用指示 terminate 調(diào)用 term_func。

// exceptions_Unhandled_Exceptions.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
void term_func() {
  cout << "term_func was called by terminate." << endl;
  exit( -1 );
}
int main() {
  try
  {
   set_terminate( term_func );
   throw "Out of memory!"; // No catch handler for this exception
  }
  catch( int )
  {
   cout << "Integer exception raised." << endl;
  }
  return 0;
}

輸出:

term_func was called by terminate.

term_func 函數(shù)最好是通過(guò)調(diào)用 exit 來(lái)終止程序或當(dāng)前線程。如果它沒(méi)有這樣做,而是返回到其調(diào)用方,則調(diào)用 abort。

相關(guān)文章

  • QT使用QChart繪制柱狀圖

    QT使用QChart繪制柱狀圖

    在Qt中使用QChart類可以快速繪制一個(gè)圖表出來(lái),比如折線圖、餅圖、柱狀圖等,本文就來(lái)為大家介紹一下如何利用QChart繪制簡(jiǎn)單的柱狀圖吧
    2024-11-11
  • C語(yǔ)言中pthread_create函數(shù)實(shí)現(xiàn)向線程函數(shù)傳遞參數(shù)

    C語(yǔ)言中pthread_create函數(shù)實(shí)現(xiàn)向線程函數(shù)傳遞參數(shù)

    本文主要介紹了C語(yǔ)言中pthread_create函數(shù)實(shí)現(xiàn)向線程函數(shù)傳遞參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 深度揭秘C++面向?qū)ο缶幊讨欣^承的核心概念

    深度揭秘C++面向?qū)ο缶幊讨欣^承的核心概念

    我們知道C語(yǔ)言是面向過(guò)程的編程語(yǔ)言,C++在C語(yǔ)言的基礎(chǔ)上進(jìn)化出了面向?qū)ο蟮哪P?,而繼承就是面向?qū)ο蟮闹匾獙傩裕旅婢妥屝【巵?lái)和大家詳細(xì)講講吧
    2023-07-07
  • Windows下Qt讀取系統(tǒng)的內(nèi)存、CPU、GPU等使用信息的示例代碼

    Windows下Qt讀取系統(tǒng)的內(nèi)存、CPU、GPU等使用信息的示例代碼

    在當(dāng)今計(jì)算機(jī)應(yīng)用廣泛的領(lǐng)域中,了解系統(tǒng)的內(nèi)存、CPU和GPU使用情況是非常重要的,本文將介紹如何使用Qt和Windows API來(lái)讀取系統(tǒng)的內(nèi)存、CPU和GPU使用詳細(xì)信息,將提供一個(gè)完整的示例代碼,需要的朋友可以參考下
    2024-01-01
  • C++智能指針shared_ptr與weak_ptr的實(shí)現(xiàn)分析

    C++智能指針shared_ptr與weak_ptr的實(shí)現(xiàn)分析

    shared_ptr是一個(gè)標(biāo)準(zhǔn)的共享所有權(quán)的智能指針,允許多個(gè)指針指向同一個(gè)對(duì)象,定義在 memory 文件中,命名空間為 std,這篇文章主要介紹了C++ 中 shared_ptr weak_ptr,需要的朋友可以參考下
    2022-09-09
  • C++中pair的用法總結(jié)

    C++中pair的用法總結(jié)

    pair是C++STL(標(biāo)準(zhǔn)模板庫(kù))中的一個(gè)現(xiàn)有容器,它將2個(gè)數(shù)據(jù)整合成一組數(shù)據(jù),當(dāng)我們類似需求的時(shí)候就可以使用到pair,pair的本質(zhì)其實(shí)就是個(gè)結(jié)構(gòu)體,本文將詳細(xì)的給大家介紹pair用法,感興趣的同學(xué)可以參考閱讀
    2023-05-05
  • c++中inline的用法分析

    c++中inline的用法分析

    本篇文章是對(duì)c++中inline的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 關(guān)于C++一些特性的探究

    關(guān)于C++一些特性的探究

    下面小編就為大家?guī)?lái)一篇關(guān)于C++一些特性的探究。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • C++與Qt的內(nèi)存管理機(jī)制詳解

    C++與Qt的內(nèi)存管理機(jī)制詳解

    這篇文章主要介紹了C++與Qt的內(nèi)存管理機(jī)制使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • C語(yǔ)言數(shù)組元素的循環(huán)移位方法

    C語(yǔ)言數(shù)組元素的循環(huán)移位方法

    今天小編就為大家分享一篇C語(yǔ)言數(shù)組元素的循環(huán)移位方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論

乌拉特中旗| 永仁县| 通江县| 新郑市| 南投市| 和政县| 岚皋县| 兰溪市| 乌兰县| 双城市| 泰州市| 迁西县| 泸定县| 鹤峰县| 安图县| 临夏市| 江永县| 永定县| 松桃| 繁峙县| 延安市| 赫章县| 卢氏县| 南通市| 白玉县| 开鲁县| 三台县| 文安县| 房山区| 沂源县| 绵竹市| 屯门区| 会泽县| 宝坻区| 木兰县| 奉新县| 墨竹工卡县| 许昌市| 托里县| 汉川市| 东城区|