最新国产AV资源网_亚洲熟女AV天堂五月天_中文字幕丶东京热_中文字幕乱码免费高清视频

Hi,您好,歡迎來到西安盛圖軟件科技有限公司!

C++ try catch 異常處理

發(fā)布時間:2023-11-30 14:02:10

在執(zhí)行C ++代碼時,可能會發(fā)生不同的錯誤:程序員編寫的編碼錯誤,由于錯誤的輸入引起的錯誤或其他不可預(yù)見的情況。C++ 中try塊可以捕獲測試代碼塊中的錯誤。catch塊可以處理錯誤。本文主要介紹C++ try catch異常處理(Exception)。



1、C++ 異常處理關(guān)鍵字

C++異常處理包括三個關(guān)鍵字:try,throwcatch

try:可以定義一個代碼塊,該代碼塊在執(zhí)行時將進(jìn)行異常錯誤檢測。它后面通常跟著一個或多個 catch 塊。

catch:如果try塊中發(fā)生錯誤,則該語句允許定義要執(zhí)行的代碼塊。catch 關(guān)鍵字用于捕獲異常。

throw:可以創(chuàng)建一個自定義的錯誤,可以拋出自定義的異常。

語法:

try
{
// 保護(hù)代碼
}catch( ExceptionName e1 )
{
// catch 塊
}catch( ExceptionName e2 )
{
// catch 塊
}catch( ExceptionName eN )
{
// catch 塊
}


2、C++ throw拋出異常

可以使用 throw 語句在代碼塊中的任何地方拋出異常。throw 語句的操作數(shù)可以是任意的表達(dá)式,表達(dá)式的結(jié)果的類型決定了拋出的異常的類型。

例如,

try {
 int age = 11;
 if (age > 0) {
   cout << "age 是大于0";
 } else {
   throw (age);
 }
}
catch (int myNum) {
 cout << "age 不是合法值!";
 cout << "age = " << myNum;
}


3、C++ try catch 捕獲異常

catch 塊跟在 try 塊后面,用于捕獲異常。catch 關(guān)鍵字后的括號內(nèi)的異常聲明,決定可以指定捕捉的異常類型。

例如,

try {
 int age = 11;
 if (age > 0) {
   cout << "age 是大于0";
 } else {
   throw (age);
 }
}
catch (int myNum) {
 cout << "age 不是合法值!";
 cout << "age = " << myNum;
}


4、C++ 標(biāo)準(zhǔn)的異常

C++ 提供一些標(biāo)準(zhǔn)的異常,定義在 <exception> 中,我們可以在程序中使用這些標(biāo)準(zhǔn)的異常。

異常類型的說明:


異常

描述

std::exception

該異常是所有標(biāo)準(zhǔn) C++ 異常的父類。

std::bad_alloc

該異常可以通過 new 拋出。

std::bad_cast

該異??梢酝ㄟ^ dynamic_cast 拋出。

std::bad_exception

這在處理 C++ 程序中無法預(yù)期的異常時非常有用。

std::bad_typeid

該異常可以通過 typeid 拋出。

std::logic_error

理論上可以通過讀取代碼來檢測到的異常。

std::domain_error

當(dāng)使用了一個無效的數(shù)學(xué)域時,會拋出該異常。

std::invalid_argument

當(dāng)使用了無效的參數(shù)時,會拋出該異常。

std::length_error

當(dāng)創(chuàng)建了太長的 std::string 時,會拋出該異常。

std::out_of_range

該異常可以通過方法拋出,例如 std::vector 和 std::bitset<>::operator[]()。

std::runtime_error

理論上不可以通過讀取代碼來檢測到的異常。

std::overflow_error

當(dāng)發(fā)生數(shù)學(xué)上溢時,會拋出該異常。

std::range_error

當(dāng)嘗試存儲超出范圍的值時,會拋出該異常。

std::underflow_error

當(dāng)發(fā)生數(shù)學(xué)下溢時,會拋出該異常。


5、C++ 自定義異常

可以通過繼承和重載 exception 類來實現(xiàn)自定義異常類型。

例如,

#include <iostream>
#include <exception>
using namespace std;
struct MyException : public exception
{
 const char * what () const throw ()
 
{
   return "C++ Exception";
 }
};
上一篇:C++中const int*, const int * const, 和 int const *區(qū)別
下一篇:C++ 標(biāo)準(zhǔn)庫

歡迎登錄盛圖科技

歡迎注冊盛圖科技

已有賬號,立即登錄