3テラバイト

プログラム関連備忘録サイト。主にゲーム。

C#

C#例外処理の使い方

投稿日:2022年1月23日 更新日:

例外処理

数値文字列を数値に変換するint.Parseメソッドを例に例外処理を行うと、以下のようになります。
try-catchステートメントを使用し、tryブロックに例外を捕捉したいコードを記述すると、例外をスローした場合はそこでコードが終了し、catchブロックに処理が移動します。

catchブロックの引数に捕捉したい例外のクラスを指定すると、その例外発生時にcatchブロックで処理を行うことができます。

この例ではint.Parseメソッドに渡す文字列が数値の形式ではないため、FormatExceptionをスローするため、FormatExceptionを引数に取っているcatchブロックの処理が実行されます。

try
{
  string str = "1-1";
  int num = int.Parse(str);
}
catch (FormatException e)
{
  Console.WriteLine("フォーマットが不適切です");
}

基本の例外クラス

https://docs.microsoft.com/ja-jp/dotnet/api/system.exception?view=net-6.0
以下は上記ページに記載されている基本的な例外のリストです。
System.Exceptionクラスを基底に、さまざまな例外クラスが定義されていますが、これらは多くのメソッドで返される可能性のあるものです。

クラス説明
ArgumentException無効な引数
ArgumentNullException引数がnull
ArgumentOutOfRangeException引数が有効範囲外
DirectoryNotFoundExceptionディレクトリパスが見つからない
DivideByZeroException0除算
DriveNotFoundExceptionドライブが見つからない
FileNotFoundExceptionファイルが見つからない
FormatExceptionフォーマットが不適切
IndexOutOfRangeExceptionインデックスが境界外
InvalidOperationException無効な操作
KeyNotFoundExceptionキーが見つからない
NotImplementedExceptionメソッドが実装されていない
NotSupportedExceptionメソッドがサポートされていない
ObjectDisposedException破棄されたオブジェクト
OverflowExceptionオーバーフローが発生
PathTooLongExceptionパスが最大長を超えている
PlatformNotSupportedExceptionプラットフォームサポート外
RankException次元数の誤り
TimeoutExceptionタイムアウト
UriFormatExceptionURIフォーマット

-C#


comment

メールアドレスが公開されることはありません。

関連記事

no image

C#で数値を累乗した値を取得する

System.Mathクラスに定義されている以下の関数Powを使用して、指定したい値を累乗した値を取得できます。 public static double Pow (double x, double …

no image

C#で文字列を右詰め、左詰めする方法

こんにちは、今日はC#で文字列を右詰め、左詰めする方法についてまとめていきます。 右詰め string.Format関数を用います。 通常は第一引数に”{0}”を指定することで …

no image

C#で文字列をバイトシーケンスに変換する方法

こんにちは、今日はC#で文字列をバイトシーケンスに変換する方法についてまとめていきます。 文字列をバイトシーケンスに変換 string str = "テスト"; System.Te …

no image

C#でDictionaryで定義したクエリパラメータをURL文字列に連結する

以下のようにURL文字列を定義している時 string url = "https://santerabyte.com"; Dictionaryでクエリパラメータのキーと値を定義し、 …

no image

C#で指定シンボルが定義されている場合のみ関数を実行する属性ConditionalAttribute

#define IS_DEBUG using System; using System.Diagnostics; [Conditional("IS_DEBUG")] pu …