ホームページ >バックエンド開発 >C++ >C の例外処理はどのように機能するか: `throw` と `catch` の完全ガイド?

C の例外処理はどのように機能するか: `throw` と `catch` の完全ガイド?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-01 14:43:10794ブラウズ

How Does C   Exception Handling Work: A Complete Guide to `throw` and `catch`?

C の例外処理を理解する: 例外をスローするための包括的なガイド

例外処理は、開発者が予期しないエラーを処理できるようにするプログラミングにおける重要なメカニズムです。プログラムの整合性を維持します。 C では、例外は throw ステートメントと catch ステートメントを使用してプログラムされます。

例外処理のカスタマイズ

次の例を考えてみましょう。

int compare(int a, int b) {
  // ...
}

仮定します。 a または b のいずれかが負の場合に例外をスローしたいとします。これを実現するには、標準ライブラリの std::invalid_argument 例外を利用できます。

例外スローの実装

#include <stdexcept>

int compare(int a, int b) {
  if (a < 0 || b < 0) {
    throw std::invalid_argument("received negative value");
  }
}

比較関数では、次のようにします。 a または b のいずれかが指定されている場合、カスタム エラー メッセージを含む std::invalid_argument 例外をスローします。 negative.

例外のキャッチ

例外は try-catch ステートメントを使用してキャッチできます。

try {
  compare(-1, 3);
} catch (const std::invalid_argument& e) {
  // Handle the exception
}

catch ブロック内で、特定のアクションを実行したり、さらなる分析のためにエラー メッセージを記録したりできます。

複数のキャッチブロックと例外の再スロー

異なる例外タイプを個別に処理するために複数の catch ブロックを使用できます。さらに、例外を再スローして、高レベルの関数でエラーを処理させることもできます。

try {
  // ...
} catch (const std::invalid_argument& e) {
  // Handle the exception
  throw;  // Re-throw the exception
}

すべての例外のキャッチ

任意のタイプの例外をキャッチするには、 catch(...) ステートメントをキャッチオールとして使用できます。

try {
  // ...
} catch (...) {
  // Handle all exceptions
}

例外を理解し、効果的に利用することによってC で処理することで、開発者はコードの堅牢性を強化し、エラー処理メカニズムを改善できます。

以上がC の例外処理はどのように機能するか: `throw` と `catch` の完全ガイド?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。