ホームページ  >  記事  >  バックエンド開発  >  無効な入力を処理するために C で例外をスローおよびキャッチするにはどうすればよいですか?

無効な入力を処理するために C で例外をスローおよびキャッチするにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-23 07:48:17952ブラウズ

How do You Throw and Catch Exceptions in C   to Handle Invalid Inputs?

例外処理: C での例外のスロー

例外処理は、エラーや異常な状況を効果的に管理できるようにする C の重要なテクニックです。例外をスロー、試行、キャッチする方法を理解することは、堅牢で信頼性の高いコードを作成するために不可欠です。

例外が役立つ一般的なシナリオの 1 つは、通常のプログラムの実行中に発生すべきではない無効な入力または条件を処理する場合です。 。たとえば、2 つの整数を比較する関数 Compare(int a, int b) について考えてみましょう。

a または b のいずれかが負の場合を処理するには、compare 関数の定義を次のように変更できます。

#include <stdexcept>

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

この例では、throw ステートメントを使用して、いずれかのパラメーターが負の場合に例外を発生させます。 std::invalid_argument は、関数に渡される無効な引数に対応する組み込み例外オブジェクトです。

compare 関数によってスローされた例外を処理するには、try-catch ブロックを使用できます。

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

try ブロック内で、無効な可能性のある入力を使用して比較関数の実行を試みます。例外がスローされると、catch ブロックがそれをキャッチし、例外オブジェクト e への参照を提供します。このオブジェクトを使用すると、例外の原因を特定し、適切なアクションを実行できます。

さらに、C は例外処理に柔軟性をもたらします。上の例で示したように、値によってスローし、参照によってキャッチできます。 catch(...) を使用すると、型に関係なく例外を再スローしたり、例外をキャッチしたりすることもできます。これらの機能により、カスタマイズされた効率的な方法で例外シナリオを処理できるようになります。

以上が無効な入力を処理するために C で例外をスローおよびキャッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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