Exception handling in Scala is implemented differently, but it behaves exactly like Java and works seamlessly with existing Java libraries.
All exceptions in Scala are unchecked; there is no concept of checked exception.
Throwing exceptions is the same in Scala and Java.
throw new Exception("some exception...")
The try/finally construct is also the same in Scala and Java as shown in the following code.
try {
throw newException("some exception...")
} finally{
println("This will always be printed")
}
try/catch in Scala is an expression that results in a value.
The exception in Scala can be pattern matched in the catch block instead of providing a separate catch clause for each different exception.
Because try/catch in Scala is an expression, it becomes possible to wrap a call in a try/catch and assign a default value if the call fails.
The following code shows a basic try/catch expression with pattern matched catch block.
try {
file.write(stuff)
} catch{
case e:java.io.IOException => // handle IO Exception
case n:NullPointerException => // handle null pointer
}
The following code shows an example of wrapping a call in try/catch by calling Integer.parseIntand assigning a default if the call fails.
try{
Integer.parseInt("dog")
}catch{
case_ => 0
}