scala中为了防止代码异常终止,处理就需要用到 try
和catch
块处理,出错的代码写在 try 块中,catch用来处理异样
基本语法:
/* 说明
* 1. 在scala中只有一个catch
* 2. 在catch中可以有多个case,每个case可以匹配一种异常 case ex:ArithmeticException
* 3. => 关键符号,表示后面要执行的代码块
* 4. finally 最后要执行的
* */
*
try{
会出异常的代码块
}catch{
case ex1
case ex2
...
}
object throwDemo {
def main(args: Array[String]): Unit = {
// 如果需要在test()抛出异常后,代码可以继续执行,则我们需要处理异常
try{
test()
}catch {
case ex:Exception=>println("捕获了一个异常:"+ ex.getMessage)
case ex2:ex:Exception=> _
}finally {
// finally语句用于处理不管正常处理还是异常发生都需要执行的步骤,一般用于对象的清理工作
}
println("ok~~~~")
}
def test(): Nothing = {
throw new Exception("异常No1出现")
}
}
在sacla中,可以使用throw关键字来抛出一个异常,所有的异常都是Throwable
的子类,throw表达式的类型时Nothing
,Nothing
又是所有类型的子类,所以Throw可以使用在任意地方
object throwdemo2 {
def main(args: Array[String]): Unit = {
try{
f11()
} catch {
case ex:Exception => {
println("捕获一个异常:"+ ex.getMessage)
}
} finally {}
println("ok~~~")
}
@throws(classOf[NumberFormatException]) // 类似python中的装饰器
def f11() ={
"abc".toInt
}
}