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

Java 异常处理 -- Java 语言的异常、异常链与断言

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 009 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自己的技术栈的同学。与此同时,本专栏的所有文章,也都会准备充足的代码示例和完善的知识点梳理,因此也十分适合零基础的小白和要准备工作面试的同学学习。当然,我也会在必要的时候进行相关技术深度的技术解读,相信即使是拥有多年 Java 开发经验的从业者和大佬们也会有所收获并找到乐趣。

世界上存在永远不会出错的程序吗?也许这只会出现在程序员的梦中。随着编程语言和软件的诞生,异常情况就如影随形地纠缠着我们,只有正确处理好意外情况,才能保证程序的可靠性。


文章目录

      • 1、Java 异常概述
        • 1.1、异常机制简介
        • 1.2、异常的分类
          • 1.2.1、编译时异常
          • 1.2.2、运行时异常
          • 1.2.3、错误
      • 2、Java 异常的处理
        • 2.1、异常的捕获
          • 2.1.1、`try-catch-finally`
          • 2.1.2、`try-with-resources`
        • 2.2、异常的抛出
        • 2.3、异常的声明
        • 2.4、自定义异常
          • 2.4.1、创建自定义异常
          • 2.4.2、使用自定义异常
          • 2.4.3、自定义异常优点
      • 3、异常链
        • 3.1、什么是异常链接
        • 3.2、Java 中的异常链
          • 3.2.1、示例:定义自定义异常
          • 3.2.2、示例:实现文件读取和异常处理
          • 3.2.3、示例:异常的结果分析
        • 3.3、异常链中的 Caused by
      • 4、拓展:Java 断言处理
        • 4.1、断言的概念
        • 4.2、断言与异常的关系
        • 4.3、Java 断言的介绍
        • 4.4、Java 断言的形式
        • 4.5、Java 断言的场景
          • 4.5.1、变量值明确
          • 4.5.2、不可能到达的代码
          • 4.5.3、前置条件
          • 4.5.4、后置条件


1、Java 异常概述

1.1、异常机制简介

Java 异常是 Java 编程语言中的一种重要机制,用于处理程序执行中的错误情况。异常处理可以使程序在遇到错误时能够优雅地恢复或进行相应的处理,而不是直接崩溃。

在 Java 程序运行过程中,可能会出现各种错误,如文件错误信息、网络连接问题、无效的数组下标或未赋值的对象引用等。如果错误导致某些操作未完成,程序应该:

  1. 回到安全状态,让用户可以执行其他命令;
  2. 或者让用户保存所有操作结果,并适当地结束程序。

实现这些并不简单,因为检测或触发错误条件的代码通常与能够恢复数据到安全状态或保存

相关文章:

  • react修改本地运行项目的端口
  • 重装系统,以及设置 深度 学习环境
  • Kubernetes(K8s)从入门到精通系列之十九:Operator模式
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 游戏表演赛分队(100分) - 三语言AC题解(Python/Java/Cpp)
  • 软件方案评审与模块优化:从FOC模块出发的电控平台建设
  • 【PX4-AutoPilot教程-TIPS】离线安装Flight Review PX4日志分析工具
  • 从零制作一个docker的镜像
  • react有什么特点
  • 渗透测试nginx增加400,500报错页面
  • 网页自动关闭
  • 【FreeRTOS】ARM架构汇编实例
  • Json-server 的使用教程
  • Jupyter Notebook简介
  • 儿童编程语言
  • 设计模式-享元模式Flyweight(结构型)
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • avalon2.2的VM生成过程
  • CentOS 7 修改主机名
  • Docker容器管理
  • IDEA常用插件整理
  • js 实现textarea输入字数提示
  • oldjun 检测网站的经验
  • python 学习笔记 - Queue Pipes,进程间通讯
  • 京东美团研发面经
  • 前端js -- this指向总结。
  • 前端技术周刊 2019-02-11 Serverless
  • 前端面试题总结
  • 前端自动化解决方案
  • 设计模式走一遍---观察者模式
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微信开放平台全网发布【失败】的几点排查方法
  • 我感觉这是史上最牛的防sql注入方法类
  • 学习Vue.js的五个小例子
  •  一套莫尔斯电报听写、翻译系统
  • 数据可视化之下发图实践
  • $jQuery 重写Alert样式方法
  • (09)Hive——CTE 公共表达式
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (笔试题)分解质因式
  • (定时器/计数器)中断系统(详解与使用)
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (数据结构)顺序表的定义
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .Net CoreRabbitMQ消息存储可靠机制
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET多线程执行函数
  • .net网站发布-允许更新此预编译站点
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @vue/cli 3.x+引入jQuery
  • [ solr入门 ] - 利用solrJ进行检索