Groovy throw (raise) exception
Being able to catch exceptions is important, but so is the ability to raise exceptions (or throw exceptions) as it is called in Groovy.
If you pass a negative number to the Math.sqrt
method, it will return a value called
NaN
Not A Number.
println( Math.sqrt( 4 )) // 2.0
println( Math.sqrt( -1 )) // NaN
println('still alive') // still alive
What if you'd like to write your own sqrt function that will throw an exception if a negative value is passed to it?
Here is a solution:
def sqrt(int n) {
if (n < 0) {
throw new Exception("The number ${n} was negative")
}
return Math.sqrt(n)
}
println( sqrt( 4 )) // 2.0
println( sqrt( -1 )) // exception
println('still alive') // is not executed...
2.0
Caught: java.lang.Exception: The number -1 was negative
java.lang.Exception: The number -1 was negative
at my_sqrt.sqrt(my_sqrt.groovy:4)
at my_sqrt$sqrt.callCurrent(Unknown Source)
at my_sqrt.run(my_sqrt.groovy:11)
The code that would print "still alive" is not executed.
Catch my exception
def sqrt(int n) {
if (n < 0) {
throw new Exception("The number ${n} was negative")
}
return Math.sqrt(n)
}
println( sqrt( 4 )) // 2.0
try {
println( sqrt( -1 ))
} catch(Exception e) {
println("Exception: ${e}")
} // Exception: java.lang.Exception: The number -1 was negative
println('still alive') // still alive
timestamp: 2019-04-21T16:30:01 tags:
- throw
- Exception
- try
- catch