finallyは、tryブロックの中で例外が発生しても発生しなくても実行すべき処理を書く場所・・・。
今回は、2つのファイルを連続して読み込んで内容を出力・・・。
2つ目で例外が発生しても、1つ目のファイルを閉じる処理は実行するような形にする・・・。
MainClass.csで、
tryブロックで、StreamReaderで"test1.txt"を開いて、ストリームはsr1に格納・・・。
sr1.ReadToEndでテキストの内容が読み込まれてtext1に格納・・・。
Console.WriteLineでtext1の内容を出力・・・。
これを"test2.txt"でも同様に・・・。
catchは、ex.Messageを出力しているだけ・・・。
finallyは、"finally"といったん出力・・・。
そのあと、それぞれのストリームがnullでなければ、Closeで閉じて、"~ closed!"という感じで閉じたことを出力・・・。
test1.txtだけ存在する場合は、
text1 = ABCDE Error: ファイル 'C:\Project\Cloud\github.com\Sample\cs\finally\finally\src\final ly_\finally_\bin\Release\test2.txt' が見つかりませんでした。 finally sr1 closed! 続行するには何かキーを押してください . . .
こうなる・・・。
finallyでsr2は失敗してnullなので閉じなくていいが、sr1は成功しているのでCloseで閉じている・・・。
test2.txtも存在する場合は、
text1 = ABCDE text2 = XYZ finally sr2 closed! sr1 closed! 続行するには何かキーを押してください . . .
こうなる・・・。
finallyでどちらもCloseで閉じている・・・。
こんな感じで成功しても失敗しても終了処理をする必要がある場合は、finallyに書く・・・。
Sample/cs/finally/finally/src/finally_ at master · bg1bgst333/Sample · GitHub