C#で「try-catch文」を使った例外処理を行う方法
プログラム上ではどれだけバグを防いだとしても、ユーザー側が原因で予期せぬ例外が起こってしまうことがあります。そんなときに行う例外処理。C#では、例外処理として「try-catch文」を使うことが基本です。この記事では、try-catch文を使って例外処理を行う方法を紹介していきます。
- プログラマー
- 勝手に例外が起きてシステムが落ちたら、ユーザーからクレームが来てしまいますもんね。
- プロジェクト
リーダー - それを防ぐのが例外処理です。重要なことなのでしっかり確認していきましょう!
例外処理とは
例外処理とは、実行段階で予想外の例外が起きてしまった場合に備えて、事前に処理しておくことです。例えば、開こうとしたファイルが存在しない場合(FileNotFoundException)や引数がNULLの場合(ArgumentNullException)に例外(Exception)が発生します。
例外はシステム上、不備が発生した時に起こります。不備を無視したまま、処理を進めることは実際の開発で存在しません。
例外の状況を受け取り、代替えの処理を行ったり、エラーとしてユーザーに伝わるような処理を実装したりすることが一般的です。
そしてC#では、例外処理としてtry-catchという構文を使います。
次項で、さっそく例外処理を見ていきましょう。
サンプルコードで例外処理を見てみよう
はじめに例外処理の基本構文は以下の通りです。
1
2
3
4
5
6
7
|
try {
// 例外が発生する可能性のある処理
} catch (例外の型(~Exception) 引数) {
// 例外が発生した場合の処理(例外が発生しなければ行われない処理)
} finally {
// 例外の有無に関係なく必ず実行される処理を書く
}
|
では、実際の値を入れてみましょう。
1
2
3
4
5
6
7
8
9
10
11
|
String str = null;
try
{
// 文字列を数値に変換する
int num = Convert.ToInt32(str);
} catch (FormatException e) {
// 数値に変換できない場合
Console.WriteLine("形式が不正です。");
} finally {
Console.WriteLine("終了");
}
|
上記のコードではstrにnullが格納されておりint型に変換できないため、例外が出ます。ここではあらかじめ代入していますが、実際のシステムではユーザーが値を入力することが多いため、例外が起こりやすくなるのです。
- プログラマー
- 起こる可能性のある例外を予測することも大事なんですね。
- プロジェクト
リーダー - そうなんです。例外処理についてはマイクロソフトの公式ページも参考にしてみると、より理解が深まるかと思います。
例外処理はシステム開発をする上で必須の処理
ここではtry-catch文を使った例外処理をご紹介しましたが、いかがでしたでしょうか。コンパイル段階ではエラーが出なくても、予想外の例外が起こることは十分あり得ます。システム開発をする上で、例外処理は必須といえるでしょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)