55_异常处理
异常处理
* 语法
* 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("关闭资源"); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界