异常处理
Scala提供了try…catch来处理异常,try块用于包含可疑代码。catch块用于处理try块中发生的异常。
"_"一定要放在最后一个case,不然下划线后面的的case将无法执行
finally块用于在异常时释放资源。资源可能是文件,网络连接,数据库连接等,finally块执行代码运行保证。
//异常的处理
def main(args: Array[String]): Unit = {
try {
var b:String = null
b.head //java.lang.NullPointerException
var a = 5/0 //Exception in thread "main" java.lang.ArithmeticException: / by zero 异常
}catch{
// 异常的处理,可以统一使用Exception处理,当代码中有多个异常的时候,就需要按异常类型去处理
// 根据顺序匹配异常,从上到下,当有一个可以匹配的异常类型时,就会直接抛出异常,不会继续匹配
// 所以最好的方式是将子类异常放在前面
case e:ArithmeticException => println("除数不能为0")
case e:NullPointerException => println("空指针异常")
case e:Exception => println("捕获异常信息" + e.printStackTrace)
//上面的统一使用Exceptioin处理还可以使用下面的写法 使用 _
// case _ => println("捕获异常信息") //如果需要对参数进行处理的时,不能用_的方式
}finally {
//不管有没有异常,程序都会执行
println("程序执行")
}
println("今天天气好啊")
}
throw关键字
在代码中明确地抛出异常。Scala提供throw关键字来抛出异常。 throw关键字主要用于抛出自定义异常。
object Test02Throw {
def main(args: Array[String]): Unit = {
var a:Int = 1
try {
less18(a)
}catch {
case e:MyExceptioin => println(e.getMessage)
}
}
/**
* 通过throw的方式抛出异常信息
* @param n 年龄
*/
def less18 (n:Int){
if (n<18){
//自定义了异常类
throw new MyExceptioin("未满18岁")
}else {
"已满18"
}
}
}