c# - 例外処理(try / catch / finally / throw)
例外処理
例外処理は他の言語と一緒。tryブロックで例外が発生した場合、発生した例外の種類が書かれたcatchブロックの処理が実行される。finallyブロックは、例外の発生の有無に関わらず実行される。
例外の種類分けを行わない場合は、Exceptionでcatchする。
using System; //例外処理 class MyMain { static void Main(string[] args) { int a = 1; int b = 0; int c; try { c = a / b; } //catch( Exception e ) catch( DivideByZeroException e ) { Console.WriteLine("エラー発生"); Console.WriteLine(e.GetType()); Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); } finally { Console.WriteLine("finallyブロック実行"); } } }
エラー発生 System.DivideByZeroException 0 で除算しようとしました。 場所 MyMain.Main(String[] args) finallyブロック実行
例外を発生させる
明示的に例外を発生させる場合は、例外オブジェクトをthrowする。
下の例は、Exceptionを継承したMyExceptionをthrowしている。
using System; //例外処理(throw) class MyException : Exception { public new string Message{ get{ return "MyException例外です"; } } } class MyMain { static void Main(string[] args) { try { throw new MyException(); } catch( MyException e ) { Console.WriteLine("エラー発生"); Console.WriteLine(e.GetType()); Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); } finally { Console.WriteLine("finallyブロック実行"); } } }
エラー発生 MyException MyException例外です 場所 MyMain.Main(String[] args) finallyブロック実行