C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のNullReferenceExceptionとは?try-catchを使った例外の捕捉方法を解説

C#における NullReferenceException(ヌル参照例外)は、Javaでいう NullPointerException に相当する例外です。null のオブジェクトや変数にアクセスしようとした際に発生し、適切に処理しないとプログラムが異常終了してしまいます。

NullReferenceExceptionが発生する仕組み

たとえば、変数に null を代入した状態でその内容を出力しようとすると、実行時に例外がスローされます。このような例外は、try-catch 構文を使うことで捕捉(キャッチ)し、プログラムのクラッシュを防ぐことができます。

try-catchによる例外処理のサンプルコード

以下の例では、変数 a に null を設定した後に出力を試みています。ここで NullReferenceException が発生しますが、catch ブロックによって捕捉され、独自のメッセージが表示されます。

try {
    string? a = null;
    Console.WriteLine(a.Length); // ここでNullReferenceExceptionが発生
} catch (NullReferenceException ex) {
    Console.WriteLine("変数がNullです!");
}

catch ブロックでは、発生した例外を受け取り、エラーメッセージの表示やログへの記録など、任意の処理を行うことができます。これにより、予期しない null 参照があってもアプリケーション全体が停止するのを回避できます。

nullチェックによる事前防止も重要

try-catch で例外を捕捉することは可能ですが、パフォーマンスの観点からは例外が発生する前に null チェックを行うことが推奨されます。C#では次のような方法で安全にnullを扱えます。

  • null条件演算子(?.):オブジェクトがnullでも例外をスローせずにメンバーへアクセスできる
  • null合体演算子(??):nullの場合に代替値を指定できる
  • nullable参照型:コンパイル時にnullの可能性を検出できる
string? a = null;
// null条件演算子で安全にアクセス
int? length = a?.Length;
// null合体演算子で代替値を指定
Console.WriteLine(a ?? "値はnullです");

例外処理とnullチェックを適切に組み合わせることで、より堅牢で信頼性の高いC#アプリケーションを構築できます。

  1. PythonでIOError例外をキャッチする方法【初心者向けにわかりやすく解説】

    IOError例外とは? IOError(入出力エラー)は、入出力操作が失敗したときに発生する例外です。代表的な例としては、存在しないファイルをopen()関数で開こうとした場合や、OSに関連するエラーが発生した場合などが挙げられます。 なお、Python 3ではIOErrorはOSErrorの別名(エイリアス)となっており、どちらの名前で捕捉しても同じ例外を受け取ることができます。 try-exceptブロックで例外を処理する ファイルを開く処理などをtryブロック内に記述すると、入出力例外が発生した際にexceptブロックで適切に処理できます。以下に具体的なコード例を示します。 コード例(

  2. PythonでKeyError例外をキャッチする方法をわかりやすく解説

    Pythonでは、辞書(dict)に存在しないキーを使って値へアクセスしようとすると、KeyError例外が発生します。この記事では、try-except文を使ってKeyErrorをキャッチし、例外の種類や詳細情報を確認する方法を解説します。 KeyErrorが発生する仕組み 次のコードは、辞書に存在しないキー c で値を取得しようとしているため、KeyErrorが発生します。sys.exc_info() を使うと、発生した例外の型などの情報を取得できます。 import sys try: s = {a: 5, b: 7}[c] except: print(sys.exc_i