こんにちは!ぐちです。
さて、最近の本企画は条件分岐や繰り返しなどの基本構文シリーズですが、今回はtry-catch式についてご紹介したいと思います。
前回のVol.13はこちらからどうぞ。
try-catch
よくある処理としてはファイルの取得から処理完了後のファイルクローズまでを行う処理がありますが、今回もよく見る形でJavaとScalaのtry-catch式をご紹介しますね。
よーく見ると異なりますが、パっと見は特段違いも感じられないぐらいの差分だと思います。
Java
まずはJavaですね。ファイルを開いて、最後にはクローズしている処理です。
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
FileReader fr = null;
try {
fr = new FileReader("sample.txt");
} catch (FileNotFoundException e) {
// FileNotFoundExceptionの場合の処理
} catch (IOException e) {
// IOExceptionの場合の処理
} finally {
try {
fr.close();
} catch (IOException e) {
}
}
}
}
ファイルのクローズ処理をfinally句で行っているのは正常終了時も異常終了時もどちらにしてもオープンしたものはクローズしないとダメですからね。
よくトイレの便座を例えにして話す方を見ますね。笑
Scala
続きまして、Scalaです。
import java.io.{FileNotFoundException, IOException, FileReader}
object Main {
def main(args: Array[String]): Unit = {
val f = new FileReader("sample.txt")
try {
// ファイルを扱う処理
} catch {
case e: FileNotFoundException => // FileNotFoundExceptionの場合の処理
case e: IOException => // IOExceptionの場合の処理
} finally {
f.close();
}
}
}
Javaとよく似ていますが、僕個人的にはcatch部分の記載方法がすっきりしていて好みです。このあたりはコードを見比べれば、なんとなーくでも理解できますよね。笑
では今回はこの辺で。