异常处理
* 语法
* 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("关闭资源");
}
}
}