Skip to content
闸总博客

欢迎访问闸总博客

  • 首页
  • 会员中心
    • 登录
    • 订单查询
  • 技术学习
    • 技术类
      • JAVA
      • python
      • 运维相关
      • 数据库
      • 虚拟机玩法
      • 手机玩法
      • 其他
    • 计算机类
      • 计算机组成原理
      • 计算机网络
      • 操作系统
      • 数据结构
    • 关于vps分享
      • vps信息测试
      • vps玩法
    • 源码搭建教程
    • 各种工具软件
    • 其他分享
  • 游戏信息
    • pc游戏
    • 主机掌机游戏
    • 手机游戏
  • 动态交流
  • 论坛
    • 交流讨论
    • 羊毛福利
    • 源码分享
      • JAVA源码
      • python源码
      • U3D源码
      • 网站源码
      • h5游戏源码
      • 文字游戏源码
      • 手游源码
    • 资源分享
      • 教学
      • 书籍
      • 影音
      • 游戏
      • 软件
    • 资讯信息
      • 影剧
      • 游戏
      • 3C
      • 动画
  • 知识库
    • 闸总博客
    • 技术
      • Java
      • HTML/CSS
  • 商店
    • 闸总博客 zhazong710
      • 闸总博客 zhazong710
      • 闸总电影
      • 闸总小漫画
    • 微软 Microsoft
    • 谷歌 Google
    • 蒸汽 Steam
    • 任天堂Nintendo
      • 宝可梦Pokemon
    • 其他 Other
      • B站 Bilibili
      • 沪江网校
  • 子站
    • 站内游戏
      • 闸总博客2Moons
      • 闸总绿色传奇
      • 闸总寻仙纪
    • 站内页面
      • 闸总音乐
      • 闸总随机XJJ
      • 闸总舔狗日记
      • 闸总买家秀图片
      • 闸总营销号生成器
    • 站内小游戏
      • 闸总魔塔
      • 闸总人生重开模拟器魔改版
      • 闸总小游戏集合
      • 闸总miku减压
      • 闸总扫雷
      • 闸总2048
      • 闸总欧派合成
  • 0
0 菜单 关闭
  • 首页
  • 会员中心
    • 登录
    • 订单查询
  • 技术学习
    • 技术类
      • JAVA
      • python
      • 运维相关
      • 数据库
      • 虚拟机玩法
      • 手机玩法
      • 其他
    • 计算机类
      • 计算机组成原理
      • 计算机网络
      • 操作系统
      • 数据结构
    • 关于vps分享
      • vps信息测试
      • vps玩法
    • 源码搭建教程
    • 各种工具软件
    • 其他分享
  • 游戏信息
    • pc游戏
    • 主机掌机游戏
    • 手机游戏
  • 动态交流
  • 论坛
    • 交流讨论
    • 羊毛福利
    • 源码分享
      • JAVA源码
      • python源码
      • U3D源码
      • 网站源码
      • h5游戏源码
      • 文字游戏源码
      • 手游源码
    • 资源分享
      • 教学
      • 书籍
      • 影音
      • 游戏
      • 软件
    • 资讯信息
      • 影剧
      • 游戏
      • 3C
      • 动画
  • 知识库
    • 闸总博客
    • 技术
      • Java
      • HTML/CSS
  • 商店
    • 闸总博客 zhazong710
      • 闸总博客 zhazong710
      • 闸总电影
      • 闸总小漫画
    • 微软 Microsoft
    • 谷歌 Google
    • 蒸汽 Steam
    • 任天堂Nintendo
      • 宝可梦Pokemon
    • 其他 Other
      • B站 Bilibili
      • 沪江网校
  • 子站
    • 站内游戏
      • 闸总博客2Moons
      • 闸总绿色传奇
      • 闸总寻仙纪
    • 站内页面
      • 闸总音乐
      • 闸总随机XJJ
      • 闸总舔狗日记
      • 闸总买家秀图片
      • 闸总营销号生成器
    • 站内小游戏
      • 闸总魔塔
      • 闸总人生重开模拟器魔改版
      • 闸总小游戏集合
      • 闸总miku减压
      • 闸总扫雷
      • 闸总2048
      • 闸总欧派合成

闸总博客

1
  • 闸总博客

技术

12
  • Java
    • Java简介
    • Java入门
    • 数据类型与运算符
    • 包、接口、部分关键字
    • Object类、包装类型wrap、内部类、枚举
    • 异常
    • 常用类String
    • 常用类日期、数字
  • HTML/CSS
    • HTML简介
  • Spring
    • Spring 简介
    • IOC(控制反转)
    • AOP(面向切面编程)
View Categories
  • Home
  • docs710
  • 技术
  • Java
  • 异常

异常

闸总710
更新 2021年10月17日

1 min read

程序意外终止就叫异常。

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。

  • 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
  • 运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
  • 错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

Throwable: #

  • 属性是信息,
  • 属性是Throwable: 一个问题引发另一个问题。。。
  • getMessage(); 获取错误信息
  • printStackTrace(); 打印错误的 栈跟踪
		Throwable cause1 = new Throwable("玩游戏");
		Throwable cause = new Throwable("烤鸡", cause1);
		Throwable th = new Throwable("挂了", cause);
		
		th.printStackTrace();
		System.out.println(cause.getMessage());
		System.out.println(th.getMessage());
//结果:

   powershell
java.lang.Throwable: 挂了
	at lesson16.TestMain2.main(TestMain2.java:8)
Caused by: java.lang.Throwable: 烤鸡
	at lesson16.TestMain2.main(TestMain2.java:7)
Caused by: java.lang.Throwable: 玩游戏
	at lesson16.TestMain2.main(TestMain2.java:6)
烤鸡
挂了

Throwable的子类 #

  • Error: 系统级别错误不需要处理
  • Exception: 异常:
    • RuntimeException: 运行时异常(java 命令 出的异常)
    • CheckedException: 编译时异常,检查异常,( 不存在这个类指的是除了RuntimeException之外的异常)
      • 编译器提示我们处理的异常

常见的 运行时异常 #

异常中文补充
NullpointerException空指针异常null.xxx的时候触发
ArrayIndexOutOfBoundsException数组下标越界args[-1] args[2]
ArithmeticException算术异常10/0
ClassCastException类型转换异常(A)b b不是A的实例
illegalArgumentException严重的参数异常
– NumberFormatExceptionint a = Integer.parseInt(“123lkafjlkasdfkla”);

RuntimeExcepiton: 说明你写错了需要处理。

  1. nullpointerException时 要检查.前面的对象是否实例化
  2. ArrayIndexofboundsException: 确定 下标和 数组的长度
  3. ArithmeticExcepiton: 找算术公式, 例如:除数为零
  4. ClassCastException: 确定 对象是否是类型的实例
  5. IllegalArgumentException: 确定参数是否正确

异常的捕获 #

语法1:


try {
// 要捕获的代码
} catch (异常类1 变量) {
// 捕获到 异常时的处理
} catch (异常类2 变量) {
// 捕获到 异常时的处理
} finally {
// 不管是否异常都要执行的代码
}

	public static void main(String[] args) {
		int a = 0;
		Object o = null;
		try {
			System.out.println("--befor--");
			a = 10 / 1; // 10 / 0
			System.out.println("--after--");
			Class.forName("aaa"); // 加载类
			System.out.println(o.toString());
		} catch (ArithmeticException e) {

			System.out.println("抛出异常了!" + e.getMessage());
			e.printStackTrace(); // 新开了一个线程进行打印
			
		} catch (NullPointerException e) {
			e.printStackTrace();
			
		} catch (Exception e) { // 注意:大的异常放后面
			
			e.printStackTrace();
		} finally {
			System.out.println("finally");
		}
		System.out.println(a);
		
	}

语法2:jdk7

“`java
try {

} catch(异常1|异常2|异常3 e) { // 异常不可有包含关系的

} finally {

}

		int a = 0;
		Object o = null;
		try {
			System.out.println("--befor--");
			a = 10 / 1; // 10 / 0
			System.out.println("--after--");
			Class.forName("aaa"); // 加载类
			System.out.println(o.toString());
		} catch (ArithmeticException|NullPointerException e) {

			System.out.println("抛出异常了!" + e.getMessage());
			e.printStackTrace(); // 新开了一个线程进行打印
		} catch (Exception e) { // 注意:大的异常放后面
			
			e.printStackTrace();
		} finally {
			System.out.println("finally");
		}
		System.out.println(a);
		
		try {
			System.out.println("--befor--");
			a = 10 / 1; // 10 / 0
			System.out.println("--after--");
			Class.forName("aaa"); // 加载类
			System.out.println(o.toString());
		} catch (Exception e) {

			System.out.println("抛出异常了!" + e.getMessage());
			e.printStackTrace(); // 新开了一个线程进行打印
		} finally {
			System.out.println("finally");
		}

语法3:JDK8

try ( 可关闭的代码 ) {

} catch(异常 e) {

}// 不需要在fianlly里关闭

异常的抛出;throw与throws #

throw: 抛出异常对象
throw e;

throws: 用于方法定义时,抛出异常
public void abc() throws AException, BException{}

  • throw + runtimeException对象时,方法声明可以不throws
  • throw + checkedExceptiion对象时, 方法后必须什么throws 异常
  • 方法有throws checkedException时,谁调用就倒霉。要处理。
    • 1. 继续向上层抛throws
    • 2.try..catch(){}.. 对象异常进行捕获

Java 内置异常类 #

异常描述
ArithmeticException当出现异常的运算条件时,抛出此异常。例如,一个整数”除以零”时,抛出此类的一个实例。
ArrayIndexOutOfBoundsException用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
ArrayStoreException试图将错误类型的对象存储到一个对象数组时抛出的异常。
ClassCastException当试图将对象强制转换为不是实例的子类时,抛出该异常。
IllegalArgumentException抛出的异常表明向方法传递了一个不合法或不正确的参数。
IllegalMonitorStateException抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。
IllegalStateException在非法或不适当的时间调用方法时产生的信号。换句话说,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下。
IllegalThreadStateException线程没有处于请求操作所要求的适当状态时抛出的异常。
IndexOutOfBoundsException指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。
NegativeArraySizeException如果应用程序试图创建大小为负的数组,则抛出该异常。
NullPointerException当应用程序试图在需要对象的地方使用 null 时,抛出该异常
NumberFormatException当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
SecurityException由安全管理器抛出的异常,指示存在安全侵犯。
StringIndexOutOfBoundsException此异常由 String 方法抛出,指示索引或者为负,或者超出字符串的大小。
UnsupportedOperationException当不支持请求的操作时,抛出该异常。

下面的表中列出了 Java 定义在 java.lang 包中的检查性异常类。

异常描述
ClassNotFoundException应用程序试图加载类时,找不到相应的类,抛出该异常。
CloneNotSupportedException当调用 Object 类中的 clone 方法克隆对象,但该对象的类无法实现 Cloneable 接口时,抛出该异常。
IllegalAccessException拒绝访问一个类的时候,抛出该异常。
InstantiationException当试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常。
InterruptedException一个线程被另一个线程中断,抛出该异常。
NoSuchFieldException请求的变量不存在
NoSuchMethodException请求的方法不存在

赞(1)分享
更新 2021年10月17日
Object类、包装类型wrap、内部类、枚举
目录
  • Throwable:
    • Throwable的子类
  • 常见的 运行时异常
  • 异常的捕获
  • 异常的抛出;throw与throws
  • Java 内置异常类
是否有帮助
  • Happy
  • 常规
  • Sad
Copyright © 2020-2025 闸总博客 zhazong710
×

产品入口: 产品添加到购物车