概述
来看看下面这一段代码:
def main(args: Array[String]): Unit = {
val i = 10 / 0 println("你好!")
}
报错:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ForDemo$.main(ForDemo.scala:3)
at ForDemo.main(ForDemo.scala)
执行程序,可以看到scala抛出
了异常,而且没有打印出来"你好! "。说明程序出现错误后就终止了。
那怎么解决该问题呢?
在Scala中,可以使用异常处理来解决这个问题. 而异常处理又分为两种方式:
- 方式一: 捕获异常
注意: 该方式处理完异常后, 程序会继续执行.
- 方式二: 抛出异常
注意: 该方式处理完异常后, 程序会终止执行
捕获异常
格式
try {
//可能会出现问题的代码
}catch{
case ex:异常类型1 => //代码
case ex:异常类型2 => //代码
}finally {
//代码
}
解释:
- try中的代码是我们编写的业务处理代码
- 在catch中表时当出现某个异常时,需要执行的代码
- 在finally中,写的是不管是否出现异常都会执行的代码
抛出异常
概述
我们可以在一个方法中,抛出异常。格式如下:
格式
throw new Exception("这里写异常的描述信息")
案例
需求
- 通过try.catch来处理 除数为零异常.
- 在main方法中抛出一个异常.
代码
object demo1 {
def main(args: Array[String]): Unit = {
//1. 通过try.catch来处理 除数为零异常.
//2. 在main方法中抛出一个异常.
try {
val i = 65 / 0
}catch {
case ex:Exception => ex.printStackTrace()
}
println("抛出异常后继续运行----------------------------------")
throw new Exception("我是一个Bug!")
//抛出异常之后的代码都不会被执行
println("Hello, Scala!")
}
}