异常处理
* 语法
* try {
* 可疑代码
* } catch {
* 捕获异常
* case 异常1 => {}
* case 异常2 => {}
* } finally {
* 最终执行
* }
* 说明
* 1. try 代码块
* 将可疑代码封装在try代码块中,如果发生异常,catch 代码块会处理这个异常
* 2. catch 代码块
* 1. catch 代码处理发生的异常,如果不将异常抛出,可以确保程序的继续执行
* 2. scala处理的都是运行时异常,没有编译异常(checked)
* 3. 当异常发生时,按case的顺序捕获异常,范围小的在前面,范围大的在后面
* 3. finally 代码块
* 1. 不管是否发生异常,都会执行 finally代码块,一般用于资源关闭
* 4. throw 抛出一个异常
* 1. 作用 抛出异常对象,停止程序 相当于 exit(1)
* 2. 所有异常类都是Throwable的子类
* 3. throw new 异常类 的返回类型为Nothing
*
*
* */
/* * 异常处理 * 语法 * try { * 可疑代码 * } catch { * 捕获异常 * case 异常1 => {} * case 异常2 => {} * } finally { * 最终执行 * } * 说明 * 1. try 代码块 * 将可疑代码封装在try代码块中,如果发生异常,catch 代码块会处理这个异常 * 2. catch 代码块 * 1. catch 代码处理发生的异常,如果不将异常抛出,可以确保程序的继续执行 * 2. scala处理的都是运行时异常,没有编译异常(checked) * 3. 当异常发生时,按case的顺序捕获异常,范围小的在前面,范围大的在后面 * 3. finally 代码块 * 1. 不管是否发生异常,都会执行 finally代码块,一般用于资源关闭 * 4. throw 抛出一个异常 * 1. 作用 抛出异常对象,停止程序 相当于 exit(1) * 2. 所有异常类都是Throwable的子类 * 3. throw new 异常类 的返回类型为Nothing * * * */ // 1. 捕获异常 - 继续执行 object ExcepTest extends App { try { val x = 10 / 0 } catch { //捕获异常 case e1: ArithmeticException => { println("log >>>>>>> 发生了ArithmeticException异常") } case e2: Exception => { println("log >>>>>>> 发生了Exception异常") } } finally { println("关闭异常") } println("继续执行") } // 2. 方法中 - 抛出异常 object ThrowTest extends App { println(div(1, 0)) // 1. 定义方法,抛出异常 def div(x: Int, y: Int) = { try { x / y } catch { case e: ArithmeticException => { println("发生了异常") throw new ArithmeticException("分母为0") } } } }
java中的异常捕获
* 说明
* 1. Java语言按照try-catch-finally的方式来处理异常
* 2. 不管有没有捕获异常,都会执行finally,因此finally中常用来关闭资源
* 3. 可以有多个catch,分布捕获对应的异常,把范围小的异常写在类的前面,范围大的异常写在后面(否则有编译报错)
package main.java; /* * java中的异常捕获 * 说明 * 1. Java语言按照try-catch-finally的方式来处理异常 * 2. 不管有没有捕获异常,都会执行finally,因此finally中常用来关闭资源 * 3. 可以有多个catch,分布捕获对应的异常,把范围小的异常写在类的前面,范围大的异常写在后面(否则有编译报错) * */ public class Excep { public static void main(String[] args) { //java 异常处理 try { int a = 10; int b = 0; int c = a / b; } catch (RuntimeException e) { // catch 时,需要将范围小的写在前面 e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 System.out.println("关闭资源"); } } }