C++ 函數(shù)中如何處理異常?
在 c++++ 中,異常通過 try-catch 語句處理:try 塊中代碼可能拋出異常。catch 塊捕獲標(biāo)準(zhǔn)異常或自定義異常。noexcept 關(guān)鍵字聲明函數(shù)不會(huì)拋出異常,以進(jìn)行優(yōu)化。
C++ 函數(shù)中如何處理異常?
在 C++ 中,異常通過 語句處理,包括三個(gè)主要部分:
try {
// 代碼塊,可能拋出異常
}
catch (const std::exception& e) {
// 捕獲標(biāo)準(zhǔn)異常
}
catch (const MyCustomException& e) {
// 捕獲自定義異常
}
實(shí)戰(zhàn)案例:
假設(shè)我們有一個(gè)函數(shù) ,它計(jì)算兩個(gè)數(shù)的商,但當(dāng)分母為 0 時(shí)拋出異常:
int divide(int num, int denom) {
try {
if (denom == 0) {
throw std::runtime_error("除數(shù)不能為 0");
}
return num / denom;
}
catch (const std::exception& e) {
std::cout << "錯(cuò)誤: " << e.what() << std::endl;
}
}
在主函數(shù)中,我們可以調(diào)用 函數(shù)并捕獲異常:
int main() {
try {
int dividend = 10;
int divisor = 0;
int result = divide(dividend, divisor);
std::cout << dividend << " / " << divisor << " = " << result << std::endl;
}
catch (const std::runtime_error& e) {
std::cout << e.what() << std::endl;
}
}
輸出:
錯(cuò)誤: 除數(shù)不能為 0
注意:
函數(shù)中也可以拋出自定義異常,通過創(chuàng)建自定義異常類并繼承 。
使用 關(guān)鍵字聲明函數(shù)不會(huì)拋出異常,以進(jìn)行優(yōu)化。
相關(guān)推薦
-
golang函數(shù)閉包與goroutine的協(xié)作
函數(shù)閉包與 goroutine 在 go 語言中協(xié)作,創(chuàng)造并發(fā)、高效的程序:函數(shù)閉包允許函數(shù)訪問外部變量,即使函數(shù)已執(zhí)行完畢。goroutine 是輕量級(jí)協(xié)程,可以并行執(zhí)行。將函數(shù)閉包與 gorout
-
C++ 函數(shù)中如何處理錯(cuò)誤?
c++++ 中處理錯(cuò)誤的最佳實(shí)踐包括使用異常處理異常情況,以及使用錯(cuò)誤代碼表示非致命錯(cuò)誤。異常拋出自定義錯(cuò)誤信息,通過 try-catch 塊進(jìn)行捕獲和處理;錯(cuò)誤代碼用于輕微錯(cuò)誤,在檢查后通過 if-
-
golang函數(shù)返回值的并發(fā)問題
go 函數(shù)返回并發(fā)類型的并發(fā)問題包括:競態(tài)條件(返回相同的 channel 引用)、死鎖(channel 無緩沖時(shí)寫入阻塞)。解決方法是創(chuàng)建 channel 副本(競態(tài)條件)或確保 channel 具
-
使用golang函數(shù)閉包構(gòu)建可重用的代碼
使用函數(shù)閉包構(gòu)建可重用的代碼:通過創(chuàng)建包含自由變量的函數(shù),你可以創(chuàng)建行為根據(jù)傳遞的變量而改變的可重用函數(shù)。1. 定義一個(gè)函數(shù)閉包,該閉包返回一個(gè)函數(shù),該函數(shù)計(jì)算指定數(shù)字的平方。2. 在外部函數(shù)中,為自
-
golang函數(shù)返回值的類型轉(zhuǎn)換
函數(shù)返回值類型轉(zhuǎn)換分為兩種方式:type assertion 檢查值與特定類型是否兼容,不兼容則報(bào)錯(cuò);type conversion 不檢查兼容性,直接轉(zhuǎn)換。實(shí)戰(zhàn)中,可將浮點(diǎn)型轉(zhuǎn)換為整數(shù),或?qū)⒃M中的















