ホームページ  >  記事  >  バックエンド開発  >  C++ ランタイム エラー:「範囲外の例外」を解決する方法?

C++ ランタイム エラー:「範囲外の例外」を解決する方法?

WBOY
WBOYオリジナル
2023-08-25 23:16:541950ブラウズ

如何解决C++运行时错误:\'out of bounds exception\'?

C ランタイム エラーを解決する方法:「範囲外の例外」

C でプログラミングする場合、ランタイム エラーが頻繁に発生します。一般的なエラーの 1 つは、配列の範囲外エラーである「範囲外例外」です。このエラーは、有効なインデックス範囲を超えて配列にアクセスしようとするとスローされます。このようなエラーにより、プログラムがクラッシュしたり、予期しない結果が生じたりする可能性があります。以下では、この問題を解決する方法を説明し、いくつかのコード例を示します。

  1. 配列範囲外エラーを回避するための基本原則
    配列範囲外エラーは、通常、有効範囲を超えて配列要素にアクセスしようとしたときに発生します。このエラーを回避するには、次の原則に従う必要があります。

    • 配列要素にアクセスする前に、アクセスするインデックスが有効な範囲内にあるかどうかを確認します。
    • すべてのループで正しいインデックス範囲が使用され、配列要素を処理するときにその範囲を超えないようにしてください。
  2. 条件付きチェックを使用して範囲外エラーを回避する
    配列の範囲外エラーを回避するために、配列要素にアクセスする前に条件付きチェックを実行できます。以下にサンプルコードを示します。
#include <iostream>
using namespace std;

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int index;

    cout << "请输入要访问的数组索引:";
    cin >> index;
    
    if (index >= 0 && index < 5) {
        cout << "数组元素值为:" << arr[index] << endl;
    } else {
        cout << "索引超出有效范围!" << endl;
    }

    return 0;
}

上記の例では、まずアクセスする配列のインデックスを入力し、次に条件チェックを実行します。インデックスが有効な範囲内にある場合は、対応する配列要素の値が出力され、それ以外の場合は、インデックスが有効な範囲外であることを示すメッセージが表示されます。

  1. 例外処理メカニズムを使用して範囲外エラーを処理する
    C は、配列範囲外エラーを処理するために使用できる例外処理メカニズムを提供します。以下はサンプル コードです:
#include <iostream>
using namespace std;

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int index;

    cout << "请输入要访问的数组索引:";
    cin >> index;

    try {
        if (index < 0 || index >= 5) {
            throw "索引超出有效范围!";
        }

        cout << "数组元素值为:" << arr[index] << endl;
    } catch (const char* errMsg) {
        cout << errMsg << endl;
    }

    return 0;
}

上の例では、try-catch ステートメント ブロックを使用して例外をキャッチしました。インデックスが有効な範囲を超えると、カスタム例外がスローされ、catch ステートメント ブロックで例外が処理されます。これにより、範囲外エラーが発生してもプログラムはクラッシュせずに正常終了することができます。

要約:
C プログラムを作成するときは、配列範囲外エラーの問題に常に注意を払う必要があります。条件チェックを実行し、例外処理メカニズムを使用することで、範囲外エラーを効果的に回避し、解決できます。同時に、適切なプログラミングの習慣と仕様は、そのようなエラーの可能性を減らすのにも役立ちます。

以上がC++ ランタイム エラー:「範囲外の例外」を解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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