Java——异常

news/2026/1/16 23:33:59/文章来源:https://www.cnblogs.com/webyorkchain/p/19494345

Error和Exception

什么是异常

  • 实际工作中遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要求打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们的程序在跑着,内存或硬盘可能满了等等。

  • 软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文名是:Exception,意思是例外。这些,例外情况,或者叫异常,怎么让我们写的程序作出合理的处理而不至于程序崩溃。

  • 异常指程序运行中出现的不期而至的各种情况,如:文件找不到、网络连接失败、非法参数等。

  • 异常发生在程序运行期间,他影响了正常程序执行流程

简单分类

  • 要理解Java异常处理是如何工作的,你需要掌握一下三种类型的异常:

  • 异常处理框架

  • 检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。

  • 运行时异常:运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略

  • 错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,他们在编译时检查不到的

异常体系结构

  • Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类
  • 在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error(无法预料)和异常Exception(可以预料)

Error

  • Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写这所执行的操作无关
  • Java虚拟机运行错误(Virtual MachineError),当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。这些异常发生时,Java虚拟机一般会选择线程终止
  • 还有发生在虚拟机试图执行应用时,如类定义错误(NoClassDefFoundError)、链接错误(LinkageError)。这些错误是不可检查的,因为它们在引用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的情况

Exception

Exception

异常处理机制

  • 抛出异常

  • 捕获异常

  • 异常处理五个关键字

    • try、catch、finally、throw、throws

异常

package com.java.exception;public class Demo01 {public static void main(String[] args) {//System.out.println(11/0);-------->ArithmeticException//除零异常//new Demo01().a();  ----->栈溢出错误(error)StackOverflowError}
//    public void a(){
//        b();
//    }
//    public void b(){
//        a();
//    }
}
package com.java.exception;public class Test {public static void main(String[] args) {int a=1;int b=2;try {//监控区域内代码System.out.println(a/b);}catch (ArithmeticException e){//如果要捕获多个异常,应当从小到大排序⬇System.out.println("程序异常,请检查程序,b不能为零喵");}catch (Throwable  t){System.out.println("Throwable喵");} finally {//处理善后工作,无论出不出现错误,都会执行System.out.println("结束了喵");}}
}
package com.java.exception;import org.w3c.dom.ls.LSOutput;public class Demo02 {public static void main(String[] args) {int a=1;int b=0;try {new Demo02().chu(a,b);} catch (ArithmeticException e) {System.out.println("坏掉了喵~");} finally {}}//假设这个方法中处理不了这个异常,可以用throws向上抛出异常public void chu(int a,int b) throws ArithmeticException{if (b==0){//  throw   throwsthrow new ArithmeticException();//主动抛出异常,一般在方法中使用}System.out.println(a/b);}}
/*
if (b==0){//  throw   throwsthrow new ArithmeticException();//主动抛出异常}try {//cmd/alt + ctrl + t 快捷生成System.out.println(a/b);} catch (Exception e) {//catch(想要捕获的异常类型)捕获异常throw new RuntimeException(e);//打印错误的栈信息} finally {}*/

自定义异常

自定义异常

总结

package com.java.exception.demo02;public class MyException extends Exception{//传递数字>10private int detail;public MyException( int a) {this.detail = a;}//toString  异常的打印信息@Overridepublic String toString() {return "MyException{"  + detail + '}';}
}
package com.java.exception.demo02;public class Test {//先写一个可能存在异常的方法public static void Test(int a) throws MyException {System.out.println("传递的参数是"+a+"喵");if (a>10){throw new MyException(a);//抛出异常方法就结束了}System.out.println("结束了喵");}public static void main(String[] args) {try {Test(11);} catch (MyException e) {//增加一些处理异常的代码,将损失降到最小System.out.println("这是我自定义的异常喵=>"+e);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1170342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机毕业设计案例】基于Java濒危物种公益网站的设计与实现基于SpringBoot濒危物种公益救助交流平台(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

学习笔笔记——ARM 嵌入式系统与内核架构

ARM 嵌入式系统与内核架构详解一、计算机系统基本组成1.1 计算机硬件系统基本组成CPU(中央处理器):控制单元 运算单元 寄存器存储器系统:内存(主存):RAM、ROM外存:硬盘、闪存等输入…

Java计算机毕设之基于SpringBoot+vue的山区农户农产品供销服务系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

通信原理篇---AM/DSB/SSB/VSB解调

我们用“拆快递包裹”的比喻,来彻底讲清楚这四大经典模拟调制方式的解调方法。解调就是接收端如何从“卡车”(已调信号)里,完好地取出“礼物”(原始信号)的过程。核心思想:解调的两大门派所有解…

深入研究 Golang 下 Kafka 的集群搭建与配置

深入研究 Golang 下 Kafka 的集群搭建与配置 关键词:Kafka集群、Golang、Sarama、消息队列、分布式系统 摘要:本文从“如何用Golang玩转Kafka集群”的视角出发,结合生活场景类比与实战代码,详细讲解Kafka集群的核心概念、搭建步骤…

【数学趣题】二次方程的有理数根和共轭二次根式的处理

今天在上课时见识到了北京的神秘升学考试题,出得相当美丽,因此来记述一下。 \(\large\mathbf{P}\)\(\small\mathbf{ROBLEM\ 1}\) 计算:\(\displaystyle \dfrac{\displaystyle\sum^{99}_{i=1}\sqrt{10+\sqrt n}}{\di…

Java毕设项目:基于SpringBoot+vue的山区农产品供销服务系统的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【课程设计/毕业设计】基于SpringBoot + Vue的影院线上购票管理平台基于SpringBoot+Vue的影视购票平台的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【课程设计/毕业设计】基于SpringBoot + Vue的影院线上购票管理平台基于SpringBoot+Vue的影视购票平台的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

把祝福写成一首歌:10 个「Song」主题网站,送给生命里最重要的人

有些话,写在卡片里太短;当面说出口又容易哽咽。 更好的方式,可能是——把它写成一首歌:让爱有旋律,让回忆有声音,让祝福有回响。 这篇文章整理了 10 个「Song」主题网站,你可以按对象与场景快速选择入口:想要一…

【课程设计/毕业设计】基于SpringBoot+vue的山区农产品产销山区农产品供销服务系统的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【课程设计/毕业设计】基于SpringBoot+vue的山区农产品产销山区农产品供销服务系统的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

AI长期记忆存储方案对比:哪种最适合你的应用

AI长期记忆存储方案对比:哪种最适合你的应用关键词:AI长期记忆、存储方案、向量数据库、知识图谱、关系型数据库、NoSQL、混合存储摘要:AI系统要像人类一样"记住"历史信息,长期记忆存储是关键。本文将带你像挑水果一样对…

【多线程编程】CompletableFuture 使用指南(基础篇):从原理到 API

文章目录一、为什么需要 CompletableFuture(Why CompletableFuture):解决异步编程的核心痛点1.1 传统 Future 的困境:串行慢、并行复杂1.2 CompletableFuture 的解决方案:简单、高效、可靠二、CompletableFuture 的实现…

【Java多并发编程】CompletableFuture 使用指南(实战篇):从场景到优化

文章目录一、实战场景(Practical Scenarios):从简单到复杂1.1 多数据源并行查询:总耗时约等于最慢的那个(性能提升可达数倍)1.2 异步任务链式处理:前一个任务的输出作为后一个任务的输入&#x…

【毕业设计】基于SpringBoot+vue的山区农产品供销服务系统的设计与实现(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

Keil MDK-ARM 540 超详细下载安装激活教程攻略:嵌入式开发新手零失败教程(2026 实测)

做单片机编程、Cortex-M 内核开发的朋友,肯定绕不开 Keil MDK-ARM—— 这款嵌入式开发神器堪称 “行业标配”,而 5.40 版本更是经典稳定款,兼容绝大多数主流单片机(STM32、NXP、Microchip 等),不管是课程设计、毕…

告别堆叠,拥抱统一:金仓数据库“多模一体”开启文档处理新范式

金仓数据库 MongoDB 兼容版通过“多模融合”架构重塑文档数据库新范式,其核心在于将文档模型深度集成于统一的企业级数据库内核中,实现关系型与文档型数据的统一处理与管理。以下从使用示例、性能对比、内核特性、迁移与高可用、实践案例等方面展开说明&…

Java毕设选题推荐:基于SpringBoot+vue的农产品供应链管理系统设计与开发 山区农产品供销服务系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

基于 Flutter × OpenHarmony 构建高质感专辑封面区域实践

文章目录基于 Flutter OpenHarmony 构建高质感专辑封面区域实践前言背景Flutter OpenHarmony 跨端开发介绍开发核心代码关键实现解析心得总结基于 Flutter OpenHarmony 构建高质感专辑封面区域实践 前言 在音乐类、多媒体类应用中,专辑封面区域往往是用户第一眼…