scala> :paste // Entering paste mode (ctrl-D to finish) // Best Practice : Exceptions are NOT recommended in Scala // Might need to use when we are dealing with Java APIs //#Programming Scala:83 //psn > a30 > a50 //Example : Identifying the file size import scala.io.Source import scala.util.control.NonFatal object ReadFile { def main(args: Array[String]) = { args.foreach{ arg => println(s"arg -> $arg") countLineSize(arg) } } // Count no of lines in the given File def countLineSize(fileName: String) = { println("Inside countLineSize()") var source: Option[Source] = None try { source = Some(Source.fromFile(fileName)) val size = source.get.getLines.size println(s"file $fileName has $size lines") }catch { //*** Instead of using Separate Catch Clause to handle // every exception type, we can use pattern matching case NonFatal(x) => println(s"Non fatal exception -> $x") }finally { // Extract 'Source' from 'Option' for (s <- source) { println(s"Closing file $fileName...") s.close } } } } // Exiting paste mode, now interpreting. import scala.io.Source import scala.util.control.NonFatal defined module ReadFile scala> ReadFile.main(Array("./testfile.txt")) arg -> ./testfile.txt Inside countLineSize() Non fatal exception -> java.io.FileNotFoundException: ./testfile.txt (No such file or directory)
Exception Example
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment