C++ 関数例外とクラス例外: 複数の例外処理戦略

WBOY
リリース: 2024-05-03 17:18:01
オリジナル
221 人が閲覧しました

C 例外処理は、関数例外とクラス例外の 2 種類に分かれます。複数の例外処理戦略には、1 つずつ処理することや基本クラスをキャプチャすることが含まれます。実際の戦闘では、例外処理戦略を使用して、さまざまなソースからの例外を処理し、例外の種類に応じてさまざまなエラー メッセージを出力できます。

C++ 函数异常与类异常:多重异常处理策略

C 関数例外とクラス例外: 複数の例外処理戦略

概要

例外処理は、C でランタイム エラーを処理する方法です。強力なメカニズム。これにより、プログラムは例外が発生したときに正常に応答し、回復することができます。 C には、関数例外とクラス例外の 2 種類の例外があります。この記事では、これら 2 つの例外タイプについて説明し、複数の例外処理戦略を使用してそれらを同時に処理する方法を示します。

関数例外

関数例外は、関数内で直接スローされる例外です。throwキーワードの後に例外タイプまたはオブジェクトを使用します。例:

void divide(int a, int b) { if (b == 0) throw std::runtime_error("Division by zero"); }
ログイン後にコピー

クラス例外

クラス例外は、ユーザー定義クラスによってスローされる例外です。これらは、throwキーワードの後に例外クラス インスタンスを使用します。例:

class NegativeNumberException : std::exception { public: const char *what() const override { return "Cannot accept negative numbers"; } }; void checkNumber(int n) { if (n < 0) throw NegativeNumberException(); }
ログイン後にコピー

複数の例外処理戦略

関数またはクラスが同時に複数の例外をスローすることがあります。この場合、複数の例外処理戦略を使用して、すべての例外を処理できます。次の戦略が一般的に使用されます:

1. 1 つずつ処理します:

try { // 调用可能抛出异常的代码 } catch (std::runtime_error &e) { // 处理 std::runtime_error 异常 } catch (NegativeNumberException &e) { // 处理 NegativeNumberException 异常 } catch (...) { // 处理任何其他异常 }
ログイン後にコピー

2. 基本クラスをキャプチャします:

try { // 调用可能抛出异常的代码 } catch (std::exception &e) { // 处理所有 std::exception 派生的异常 } catch (...) { // 处理任何其他异常 }
ログイン後にコピー

実際の戦闘ケース

次のコードを考えてみましょう。このコードは、divide関数とcheckNumber関数を呼び出し、さまざまな例外条件に基づいてメッセージを出力します。 ##出力:

#include  using namespace std; void divide(int a, int b); void checkNumber(int n); int main() { try { divide(5, 0); } catch (std::runtime_error &e) { cout << "Division by zero occurred" << endl; } catch (NegativeNumberException &e) { cout << "Negative number detected" << endl; } catch (...) { cout << "Unknown exception occurred" << endl; } try { checkNumber(10); } catch (...) { cout << "Error in number check" << endl; } return 0; }
ログイン後にコピー

以上がC++ 関数例外とクラス例外: 複数の例外処理戦略の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!