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

Java——异常

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.jsqmd.com/news/255030/

相关文章:

  • 【计算机毕业设计案例】基于Java濒危物种公益网站的设计与实现基于SpringBoot濒危物种公益救助交流平台(程序+文档+讲解+定制)
  • 学习笔笔记——ARM 嵌入式系统与内核架构
  • Java计算机毕设之基于SpringBoot+vue的山区农户农产品供销服务系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 通信原理篇---AM/DSB/SSB/VSB解调
  • 深入研究 Golang 下 Kafka 的集群搭建与配置
  • Java毕设项目:基于SpringBoot+vue的山区农产品供销服务系统的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 【数学趣题】二次方程的有理数根和共轭二次根式的处理
  • 【课程设计/毕业设计】基于SpringBoot + Vue的影院线上购票管理平台基于SpringBoot+Vue的影视购票平台的设计与实现【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于SpringBoot + Vue的影院线上购票管理平台基于SpringBoot+Vue的影视购票平台的设计与实现【附源码、数据库、万字文档】
  • 把祝福写成一首歌:10 个「Song」主题网站,送给生命里最重要的人
  • 【课程设计/毕业设计】基于SpringBoot+vue的山区农产品产销山区农产品供销服务系统的设计与实现【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于SpringBoot+vue的山区农产品产销山区农产品供销服务系统的设计与实现【附源码、数据库、万字文档】
  • AI长期记忆存储方案对比:哪种最适合你的应用
  • 【多线程编程】CompletableFuture 使用指南(基础篇):从原理到 API
  • 【毕业设计】基于SpringBoot+vue的山区农产品供销服务系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • 【Java多并发编程】CompletableFuture 使用指南(实战篇):从场景到优化
  • Keil MDK-ARM 540 超详细下载安装激活教程攻略:嵌入式开发新手零失败教程(2026 实测)
  • 告别堆叠,拥抱统一:金仓数据库“多模一体”开启文档处理新范式
  • Java毕设选题推荐:基于SpringBoot+vue的农产品供应链管理系统设计与开发 山区农产品供销服务系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 基于 Flutter × OpenHarmony 构建高质感专辑封面区域实践
  • 2026必备!继续教育TOP8AI论文网站测评与推荐
  • 程序员如何系统入门Vibe Coding?
  • 导师推荐2026 AI论文工具TOP9:继续教育写作全攻略
  • 【实测好用】禁止windows更新工具,一键彻底关闭Win11自动更新工具
  • Claude Code 插件 Skill-Creator 使用说明
  • 救命神器9个一键生成论文工具,本科生毕业论文救星!
  • 新买的电脑如何禁止WIn10、Win11系统自动更新?一键关闭Windows系统更新!!关闭或禁用windows自动更新工具
  • 从80%降到10%!实测5个真实有效的降AI率工具,分享免费降AI改写技巧,告别高AI率焦虑症
  • 毕业论文AIGC疑似度太高怎么办?深度评测5个真实有效的降AI神器,手把手教你免费降低AI率
  • 03命题逻辑的推理理论