【java】21:异常-Exception

基本概念

Java语言中,将程序执行中发生的不正常情况称为"异常"。(开发过程中的语法错误和逻辑错误不是异常)

·执行过程中所发生的异常事件可分为两大类

1)Error(错误):Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError栈溢出和OOM(out ofmemory),Error是严重错误,程序会崩溃。

2)Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如空指针访问,试图读取不存在的文件,网络连接中断等等,Exception分为两大类:运行时异常程序运行时,发生的异常和编译时异常编程时,编译器检查出的异常

异常体系图

1.异常分为两大类,运行时异常和编译时异常.

2.运行时异常,编译器检查不出来。一般是指编程时的逻辑错误,是程序员应该避免其出现的异常。java.lang.RuntimeException类及它的子类都是运行时异常

3.对于运行时异常,可以不作处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响

4.编译时异常,是编译器要求必须处置的异常。

常见的运行时异常

  1. NullPointerException 空指针异常

  2. ArithmeticException 数学运算异常

  3. ArrayIndexOutOfBoundsException 数组下标越界异常

  4. ClassCastException 类型转换异常

  5. NumberFormatException 数字格式不正确异常 \[\]
    常见的运行时异常举例

  6. NullPointerException 空指针异常 NullPointerException_.java 当应用程序试图在需要对象的地方使用 null 时,抛出该异常,看案例演示

java 复制代码
package com.hspedu.exception_;
public class NullPointerException_ {
public static void main(String[] args) {
String name = null;
System.out.println(name.length());
}
}
  1. ArithmeticException 数学运算异常 ArithmeticException_.java
    当出现异常的运算条件时,抛出此异常。例如,一个整数"除以零"时,抛出此类的一个实例 ,
java 复制代码
package com.hspedu.exception_;
public class NumberFormatException_ {
public static void main(String[] args) {
String name = "韩顺平教育";
int num = Integer.parseInt(name);//抛出 NumberFormatException
System.out.println(num);//1234
}
}
  1. ArrayIndexOutOfBoundsException 数组下标越界异常
    用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引
java 复制代码
package com.hspedu.exception_;
public class ArrayIndexOutOfBoundsException_ {
public static void main(String[] args) {
int[] arr = {1,2,4};
for (int i = 0; i <= arr.length; i++) {
System.out.println(arr[i]);
}
}
}
  1. ClassCastException 类型转换异常
    当试图将对象强制转换为不是实例的子类时,抛出该异常。例如,以下代码将生成一个 ClassCastException
java 复制代码
package com.hspedu.exception_;
public class ClassCastException_ {
public static void main(String[] args) {
A b = new B(); //向上转型
B b2 = (B)b;//向下转型,这里是 OK
C c2 = (C)b;//这里抛出 ClassCastException
}
}
class A {}
class B extends A {}
class C extends A {}
  1. NumberFormatException 数字格式不正确异常
    当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常 => 使用异常我们 可以确保输入是满足条件数字
java 复制代码
package com.hspedu.exception_;
public class NumberFormatException_ {
public static void main(String[] args) {
String name = "韩顺平教育";
//将 String 转成 int
int num = Integer.parseInt(name);//抛出 NumberFormatException
System.out.println(num);//1234
}
}

编译异常
编译异常是指在编译期间,就必须处理的异常,否则代码不能通过编译。
常见的编译异常

SQLException//操作数据库时,查询表可能发生异常
IOException//操作文件时,发生的异常
FileNotFoundException//当操作一个不存在的文件时,发生异常
ClassNotFoundException∥/加载类,而该类不存在时,异常
EOFException∥/操作文件,到文件末尾,发生异常
IllegalArguementException //参数异常
案例说明

因为我们还没有学习SQL,文件编程等等,这里我们先举一个(FileNotFoundException)案例来说明,其它异常使用方式类似,看老师演示:

java 复制代码
package com.hspedu.exception_;
import java.io.FileInputStream;
import java.io.IOException;
1.0
public class Exception02 {
public static void main(String[] args) {
try {
FileInputStream fis;
fis = new FileInputStream("d:\\aa.jpg");
int len;
while ((len = fis.read()) != -1) {
System.out.println(len);
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

异常处理

异常处理就是当异常发生时,对异常处理的方式。

异常处理的方式

  1. try-catch-finally程序员在代码中捕获发生的异常,自行处理

  2. throws将发生的异常抛出,交给调用者(方法)来处理,最顶级的处理者就是JVM
    示意图

相关推荐
Scott9999HH41 分钟前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔1 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社2 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海2 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖3 小时前
JDK 26 新特性详解
java·开发语言
马优晨3 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区5 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大6 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai6 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说6 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json