在 Linux 中,C++ 的異常處理主要依賴于 C++ 標準庫中的 <exception>
頭文件
throw
關鍵字拋出一個異常。你可以拋出一個預定義的異常類型(如 std::runtime_error
)或者自定義異常類型。#include <iostream>
#include <stdexcept>
int main() {
try {
int denominator = 0;
if (denominator == 0) {
throw std::runtime_error("Division by zero");
}
int result = 10 / denominator;
std::cout << "Result: " << result << std::endl;
} catch (const std::runtime_error& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
try
和 catch
語句塊捕獲異常。try
塊包含可能拋出異常的代碼,而 catch
塊包含處理異常的代碼。#include <iostream>
#include <stdexcept>
int main() {
try {
int denominator = 0;
if (denominator == 0) {
throw std::runtime_error("Division by zero");
}
int result = 10 / denominator;
std::cout << "Result: " << result << std::endl;
} catch (const std::runtime_error& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
#include <iostream>
#include <stdexcept>
void divide(int numerator, int denominator) throw(std::runtime_error) {
if (denominator == 0) {
throw std::runtime_error("Division by zero");
}
int result = numerator / denominator;
std::cout << "Result: " << result << std::endl;
}
int main() {
try {
divide(10, 0);
} catch (const std::runtime_error& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
需要注意的是,C++11 及更高版本已經廢棄了異常規范,并在 C++20 中完全移除。因此,建議使用 noexcept
關鍵字來指定函數不會拋出異常。
noexcept
關鍵字:在 C++11 及更高版本中,可以使用 noexcept
關鍵字來指定函數不會拋出異常。例如:#include <iostream>
#include <stdexcept>
void divide(int numerator, int denominator) noexcept {
if (denominator == 0) {
throw std::runtime_error("Division by zero");
}
int result = numerator / denominator;
std::cout << "Result: " << result << std::endl;
}
int main() {
try {
divide(10, 0);
} catch (const std::runtime_error& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
總之,在 Linux 中的 C++ 異常處理主要依賴于 try
、catch
和 throw
關鍵字。了解這些基本概念和用法對于編寫健壯的 C++ 程序非常重要。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。