当前位置: 首页 > news >正文

异常类分析

一、异常体系

两大类:错误 异常

错误:程序没有办法处理的错误:栈溢出

剩余叫异常 分两类 运行时异常/非受检异常(编译时不受检查):空指针,索引时下标越界

和非运行时异常/受检异常(编译时会检查出来):class文件未找到

二、异常处理方法

1.try-catch

try:
• 作用域:把“可能出异常的代码”放进花括号。
• 一旦异常抛出,try 块里 剩余代码立即中断,跳到 catch。

catch可以有多个

try {// 可能抛出异常的代码
} catch (异常类型1 变量1) {// 处理方案1
} catch (异常类型2 变量2) {// 处理方案2
} finally {// 无论是否出异常都会执行的代码
}

2.finally

无论是否出异常都会执行(除非 JVM 提前退出)

int[] a = new int[5];
// try catch finally
try {for (int i = 0; i < 10; i++) {a[i] = i;}int num = 0;int count = 10 / num;
} catch (ArrayIndexOutOfBoundsException e) {System.out.println(e);
} catch (ArithmeticException e) {System.out.println(e);
} finally {System.out.println("执行啦");
}
最后会有“执行啦”这句话输出

3.异常体系总览

Throwable
├─ Error(JVM 严重问题,程序不处理)
└─ Exception
├─ RuntimeException(运行时异常)
│   ├─ NullPointerException
│   ├─ ArrayIndexOutOfBoundsException
│   └─ ArithmeticException
└─ Checked Exception(检查时异常)
├─ IOException
└─ SQLException

4.异常关键字

throw 抛出异常
throws 声明在方法后边,跟的是类名,可以跟多个异常类,用逗号隔开,表示出现异常的一种可能性,并不是一定发生。
throw 声明在方法内,跟的是对象名,只能抛出一个异常,表示一定会发生的异常。

关键字/概念出现位置语法示例作用/含义是否一定执行可跟多个
final变量 方法 类

final int x=1; 

final void show(){} 

final class A{}

禁止二次赋值 

禁止重写

禁止继承

finally异常处理结构try{...}finally{...}

无论是否抛异常

都会执行的代码块

finalize()Object 方法

protected void

finalize(){}

GC 回收对象前调用的

“临终清理”钩子

throws方法签名

void m() throws

IOException

SQLException

告诉调用者

去处理

throw方法体内

throw new

RuntimeException

("xxx");

实际抛出一个异常对象

(一定会中断当前流程)

Class.forName()任意位置

Class.forName

("com.xxx.Cat")

运行时动态加载类

并返回 Class 对象

http://www.dtcms.com/a/361814.html

相关文章:

  • HTML应用指南:利用GET请求获取全国招商银行网点位置信息
  • 软件测试面试技巧-面试问题大全
  • 盟接之桥说制造:守正出奇:在能力圈内稳健前行,以需求导向赢得市场
  • 综合实验:DHCP、VLAN、NAT、BDF、策略路由等
  • 数据库主键选择策略分析
  • 【高级】系统架构师 | 2025年上半年综合真题
  • Linux系统结构(概要)
  • 实现一个线程池管理器
  • 数字后端tap cell:新老工艺tap cell区别
  • 人工智能视频画质增强和修复软件Topaz Video AI v7.1.1最新汉化,自带星光模型
  • 网络编程5-数据库、sqlite3数据库
  • 多级渐远纹理(Mipmap):原理、生成、采样与 OpenGL 实践
  • 2025 金融行业证书怎么选?从能力适配到职业方向的理性梳理
  • 7-ATSAM3X8-DAC输出
  • 网络与信息安全有哪些岗位:(13)安全服务工程师 / 顾问
  • 机器学习——损失函数
  • leetcode-python-1796字符串中第二大的数字
  • LeetCode82删除排序链表中的重复元素 II
  • wpf之样式
  • 嵌入式解谜日志之Linux操作系统—共享内存
  • Python备份实战专栏第5/6篇:Docker + Nginx 生产环境一键部署方案
  • 基于多种分词算法的词频统计的中文分词系统的设计与实现
  • 信创之-麒麟v10服务器安装tengine(已完成)
  • 推荐系统中Redis 数据存储:二进制序列化协议选型与优化
  • linux连接服务器sftp无法输入中文
  • 基于SpringBoot的教务管理系统(源码+文档)
  • C/C++ Linux系统编程:进程通讯完全指南,管道通讯、共享内存以及消息队列
  • 零基础从头教学Linux(Day 25)
  • vue3使用Eslint
  • B样条曲线在节点u处添加节点的操作方法