【Aモデル録 フェーズ1 C#基礎】
👉 例外(Exception)とは、「実行中に起きた想定外の出来事」
👉 try-catch とは、「その出来事でプログラムを即死させない仕組み」
👉 実行前に止まる(修正必須)
👉 実行して初めて起きる
try-catch が扱うのは、後者。
int x = 10;
int y = 0;
int result = x / y; // 💥事故が起きる
👉 0で割れない
実行すると:
DivideByZeroException //ゼロ除算例外
「例外メッセージ」が出力され、プログラム 即終了。
try
{
// 危険そうな処理
}
catch
{
// 例外が起きたときの処理
}
try
{
int x = 10;
int y = 0;
int result = x / y;
}
catch
{
Console.WriteLine("エラーが発生しました");
}
結果:
👉 これが try-catch の役割
try
{
危険かもしれない作業をやってみる
}
catch
{
失敗したら、こちらで対応する
}
会社イメージ:
❌ 違う
👉 「エラーを検知して、制御を続ける」
❌ 違う
👉 設計ミスを隠すだけになる
SeizoBu seizoBu1 = null; //nullで作っていたとする
try
{
seizoBu1.TargetNumber = 1000;
}
catch (NullReferenceException)
{
Console.WriteLine("部署が存在しません");
}
👉 null を「事故」として処理できる
ただし。
これが超重要ポイント。
👉try-catch は「最後の安全ネット」
本当の理想は「例外が起きない設計」
これは、現段階で理解する必要はありません。
が、知識として知っておく意味が、充分にあるところ。
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
ExceptionexMessage例外が発生したとき、C#内部では:
👉 「例外オブジェクト(Exceptionオブジェクト)」
が生成されています。
その中に、以下の情報が入っています:
System.NullReferenceException: Object reference not set to an instance of an object.
これを分解すると:
System.NullReferenceExceptionObject reference not set to an instance of an object.この 英文そのものは、
👉 Exception.Message プロパティの中身
です。
つまり、
💡「この英文メッセージ」
= 例外オブジェクトが出してくれる Message
NullReferenceException(ヌル参照例外)IndexOutOfRangeException(インデックスアウトオブレンジ例外)DivideByZeroException(ゼロ除算例外)👉 全部 Exception(例外) の子ども