午夜网站国产欧美_加勒比视频亚洲无码_91亚洲人人在字幕国产_18禁止美女爆乳免费网站_被消防员c哭高h野外糙汉动漫_午夜精品视频在线无码_gogowww人体大胆裸体午液_2021自拍偷区亚洲综合第一页_国产欧美一区二区精品性色超碰_99國產精品無碼

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

C++ try catch 異常處理

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

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



1、C++ 異常處理關鍵字

C++異常處理包括三個關鍵字:try,throwcatch

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

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

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

語法:

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


2、C++ throw拋出異常

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

例如,

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 關鍵字后的括號內的異常聲明,決定可以指定捕捉的異常類型。

例如,

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


4、C++ 標準的異常

C++ 提供一些標準的異常,定義在 <exception> 中,我們可以在程序中使用這些標準的異常。

異常類型的說明:


異常

描述

std::exception

該異常是所有標準 C++ 異常的父類。

std::bad_alloc

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

std::bad_cast

該異常可以通過 dynamic_cast 拋出。

std::bad_exception

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

std::bad_typeid

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

std::logic_error

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

std::domain_error

當使用了一個無效的數學域時,會拋出該異常。

std::invalid_argument

當使用了無效的參數時,會拋出該異常。

std::length_error

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

std::out_of_range

該異??梢酝ㄟ^方法拋出,例如 std::vector 和 std::bitset<>::operator[]()。

std::runtime_error

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

std::overflow_error

當發(fā)生數學上溢時,會拋出該異常。

std::range_error

當嘗試存儲超出范圍的值時,會拋出該異常。

std::underflow_error

當發(fā)生數學下溢時,會拋出該異常。


5、C++ 自定義異常

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

例如,

#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++ 標準庫

歡迎登錄盛圖科技

歡迎注冊盛圖科技

已有賬號,立即登錄