JAVA 特性 异常机制

简介: 当程序抛出一个异常后,从程序中导致异常的代码处跳出,Java虚拟机检测寻找和try关键字匹配的处理该异常的catch块。如果找到,将控制权交到catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被重新执行。如果没有找到处理该异常的catch块,最终运行时报错。

1.异常概述:

异常:指程序在执行过程中,出现的非正常情况,最终导致JVM非正常停止。

  • Error:严重错误问题,无法处理的错误,只能事先避免,比如内存溢出。
  • Exception:称为异常类,它表示程序本身可以处理的问题,比如数组下标越界。

2.异常分类:

  • 编译时异常也称为检查异常,必须显示处理,否则程序就会发生错误,无法通过编译。
  • 运行时异常也称为非检查异常,无需显示处理,也可以和编译时异常一样处理。RuntimeException所有的类及其子类称为运行时异常,其他的异常都是编译时异常。

RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码。

非RuntimeException:编译期就必须处理的,否则程序就不能通过编译,就更不能正常运行了。

3.异常处理机制:

  • 当程序抛出一个异常后,从程序中导致异常的代码处跳出,Java虚拟机检测寻找和try关键字匹配的处理该异常的catch块。
  • 如果找到,将控制权交到catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被重新执行。
  • 如果没有找到处理该异常的catch块,最终运行时报错。

格式:

try{
  可能出现异常的代码块;
} catch(异常名 变量名){
  异常的处理代码;
}

执行流程:

  • 程序从try里面的代码开始执行
  • 出现异常,回自动生成一个异常类对象,该异常对象将提交给Java运行时系统
  • 当运行时系统接收到异常对象时,回到catch中去找匹配的异常类,找到之后会进行异常的处理
  • 执行完毕之后,程序还可以继续往下执行

异常处理可以有多个catch:

  • 每个try语句块可以伴随一个或者多个catch语句,用于处理可能产生的不同类型的异常
  • 捕获的异常类型由上至下的捕获异常类型的顺序应该是子类到父类
try{
  可能出现异常的代码;
} catch(NullPointException e){
  ......
} catch(RunException e){
  ......
} catch(Exception e){
  ......
}

子类型异常在前,父类型异常在后,这样的顺序依次捕获,否则编译不通过!!!

Finally:

  • finlly语句为异常处理提供的一个统一的出口,使得在控制流程到程序其他部分之前,能够对程序的状态作统一管理。
  • 无论try所指的程序块中是否抛出异常,finally所指定的代码都要被执行
  • 通常finally在语句中可以进行资源的释放工作,如关闭打开的文件,关闭数据库连接等
try{
  可能出现异常的代码块;
}Catch(异常名 变量名){
  异常的处理代码;
}finally{
  必须执行的代码;
}
相关文章
|
24天前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
Java API 开发者
50 0
|
3月前
|
并行计算 Java API
Java List 集合结合 Java 17 新特性与现代开发实践的深度解析及实战指南 Java List 集合
本文深入解析Java 17中List集合的现代用法,结合函数式编程、Stream API、密封类、模式匹配等新特性,通过实操案例讲解数据处理、并行计算、响应式编程等场景下的高级应用,帮助开发者提升集合操作效率与代码质量。
164 1
|
3月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
436 0
|
3月前
|
缓存 安全 Java
Java 并发新特性实战教程之核心特性详解与项目实战
本教程深入解析Java 8至Java 19并发编程新特性,涵盖CompletableFuture异步编程、StampedLock读写锁、Flow API响应式流、VarHandle内存访问及结构化并发等核心技术。结合电商订单处理、缓存系统、实时数据流、高性能计数器与用户资料聚合等实战案例,帮助开发者高效构建高并发、低延迟、易维护的Java应用。适合中高级Java开发者提升并发编程能力。
91 0
|
3月前
|
安全 Java API
Java 17 及以上版本核心特性在现代开发实践中的深度应用与高效实践方法 Java 开发实践
本项目以“学生成绩管理系统”为例,深入实践Java 17+核心特性与现代开发技术。采用Spring Boot 3.1、WebFlux、R2DBC等构建响应式应用,结合Record类、模式匹配、Stream优化等新特性提升代码质量。涵盖容器化部署(Docker)、自动化测试、性能优化及安全加固,全面展示Java最新技术在实际项目中的应用,助力开发者掌握现代化Java开发方法。
148 1
|
3月前
|
IDE Java API
Java 17 新特性与微服务开发的实操指南
本内容涵盖Java 11至Java 17最新特性实战,包括var关键字、字符串增强、模块化系统、Stream API、异步编程、密封类等,并提供图书管理系统实战项目,帮助开发者掌握现代Java开发技巧与工具。
203 1
|
3月前
|
Java 数据库连接 API
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
123 2
|
3月前
|
人工智能 前端开发 安全
Java开发不可不知的秘密:类加载器实现机制
类加载器是Java中负责动态加载类到JVM的组件,理解其工作原理对开发复杂应用至关重要。本文详解类加载过程、双亲委派模型及常见类加载器,并介绍自定义类加载器的实现与应用场景。
205 4