java异常处理方式

article/2025/10/30 20:42:31

java异常处理方式

java通过面向对象的方式进行异常处理,一旦方法出现异常,系统自动根据该异常对象寻找合适的异常处理器(Exception Handler)来处理异常,把各种不同的异常进行分类,并提供了良好的接口。

java中,每个异常都是一个对象,它是Throwable类或其他子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并可以对其进行处理。

java的异常处理是通过5个关键词来实现的,throwtrycatchfinallythrows

案例:

int num1 = 12;
int num2 = 0;
int res = num1/num2;
System.out.println(res);

众所周知,除数是不能为0的,这个在程序也是严格规定的,所以他会出现数学运算异常,导致运行不了

因此程序远认为一端代码可能会出现异常,可以使用try-catch来抛出异常

try {res = num1/num2;
} catch (Exception e) {e.printStackTrace();
}

虽然还是会抛出异常,但是还是输出了结果

基本介绍

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

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

  • Error:java虚拟机无法解决的严重错误,jvm系统内部错误、资源耗尽,比如:栈溢出(StackOverflowError)和OOM,error是严重错误,程序会崩溃
  • Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。比如空指针异常,连接超时等

异常处理类型

  • 编译异常的特点:编译时就需要捕获该异常,否则报编译错误,称为受检异常
    • SQLException:操作数据库时,查询表可能发生异常
    • IOException:操作文件时,发生的异常
    • FileNotFoundException:当操作一个不存在的文件时,发生异常
    • ClassNotException:加载类,该类不存在时,发生异常
    • EOFException:操作文件到文件末尾,发生异常
    • IllegalArguementException:参数异常
  • 运行异常的特点:可以不捕获异常,也不报编译错误,称为非受检异常

Java源程序用javac.exe编译成字节码文件过程中可能出现编译异常,而运行异常是在字节码文件用java.exe在内存中加载、运行类可能出现的异常就是运行异常,运行时异常,编译器不要求强制处理异常,因为这类异常很普遍,全处理的话会对程序的可读性和运行效率产生影响;编译异常是编译器必须处置的异常

异常处理方式

五个关键字

  • try-catch-finally

    try{//将可能有异常的代码放入
    }catch(Exception e){//捕获到异常//当异常发生时,系统将异常封装成Exception对象e,传递给catch//得到异常对象后,程序员自己处理
    }finally{//不管异常是否发生,都会执行的操作。一般是释放资源的代码
    }
    
  • try-catch

    • 如果异常发生了,则异常发生后面的代码不会执行,直接进入到catch里面
    • 如果异常没有发生,则顺序执行try的代码模块,不会进入到catch
    • 如果希望异常不论是否发生,都执行某段代码,就使用finally代码模块
  • try-finally

    • 这种用法相当于没有捕获异常,因此程序会直接崩掉
    • 应用场景执行一段代码,无论是否发生异常,都必须执行某个业务逻辑

throws异常处理

1、如果一个方法可能生成某种异常,但是不能确定如果处理这种异常,则该方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由方法的调用者负责处理,而方法的调用者也可以选择继续处理或者向上抛出

2、在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是他的父类

public void f1() throws FileNotFoundException{FileInputStream file = new FileInputStream("d://a.text");//没有这个文件,会抛出异常,直接方法后面throws直接抛出这个异常类型,可以抛出多个或者直接抛出父类Exception
}

注意:

  • 对于编译异常,程序中必须处理,比如用try-catch或者throws都可以

  • 对于运行异常,程序中没有处理,默认的处理方法就是Throws

  • 子类重写父类的方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型和父类抛出的异常一致或者父类抛出异常类型的子类型

  • 当在方法中调用另一个方法,这个方法会抛出异常,而抛出异常的类型决定是否报错

    public static void f1() throws FileNotFoundException{FileInputStream file = new FileInputStream("d://a.text");
    }
    public static void f2(){f1();//会报错//FileNotFoundException属于编译异常,在执行f2方法时,f1会抛出异常,而f2没有异常的解决方法
    }
    
    public static void f1() throws ArithmeticException{}
    public static void f2(){f1();//不会报错//因为ArithmeticException属于运行异常,并不要求程序员显示处理,因为运行异常有默认的处理方法Throws
    }
    

自定义异常

1、定义:自定义异常类名继承Exception或RuntimeException

2、如果继承Exception,属于编译异常

3、如果继承RuntimeException,属于运行异常

public class CustomException {public static void main(String[] args) {int age = 80;if(!(age>=18 && age <=120)){throw new AgeException("年龄需要在18—120之间");}System.out.println("你的年龄正确!!");}
}
class AgeException extends RuntimeException{public AgeException(String message){super(message);}
}

throw和throws的区别

1、位置不同

throw:方法内部

throws:方法的签名处

2、内容不同

throw+异常对象,抛出某个异常对象

throws+异常的类型

3、作用不同

throw:异常出现的源头,手动制造异常

throws:在方法的声明处,告诉方法的调用者,这个可能会出现声明的异常。

意义位置后面跟的东西
throws异常处理的方式方法声明处异常类型
throw手动生成异常对象的关键字方法体中异常对象

http://chatgpt.dhexx.cn/article/7IMxAbmB.shtml

相关文章

Java异常

Java笔记 文章目录 一、简介二、空指针异常三、自定义异常 一、简介 一个健壮的程序必须能够处理各种异常。 我们应该如何处理异常&#xff1f;两种方式&#xff1a; 返回约定错误码&#xff0c;例如200表示成功。在语言层面提供异常处理机制。 必要性说明&#xff1a; 异常需…

java异常体系

java异常体系结构图 一&#xff1a;java异常体系 1.Thorwable类&#xff08;表示可抛出&#xff09;是所有异常和错误的超类&#xff0c;两个直接子类为Error和Exception&#xff0c;分别表示错误和异常。 2.其中异常类Exception又分为运行时异常(RuntimeException)和非运行时…

Java 异常

Java异常 Java异常是Java提供的一种识别及响应错误的一致性机制。 Java异常机制可以使程序中异常处理代码和正常业务代码分离&#xff0c;保证程序代码更加优雅&#xff0c;并提高程序健壮性。在有效使用异常的情况下&#xff0c;异常能清晰的回答3个问题&#xff1a;异常类型…

JAVA异常详解

异常的定义 异常就是有异于常态&#xff0c;和正常情况不一样&#xff0c;有错误出现。在java中&#xff0c;阻止当前方法或作用域的情况&#xff0c;称之为异常。 异常的分类 Error&#xff1a;是程序中无法处理的错误&#xff0c;表示运行应用程序中出现了严重的错误。此类错…

java异常判断_Java异常类

异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错…

2020-11-08

Java&#xff1a;详解Java中的异常(Error与Exception) 置顶 王小二(IT) 2018-06-22 16:54:26 66242 收藏 389 分类专栏&#xff1a; 编程语言(Java基础) 文章标签&#xff1a; try catch finally Error 版权 《Java&#xff1a;详解Java中的异常(Error与Exception)》《Jav…

Java中异常详解

目录 介绍 : 异常体系&#xff1a; 异常的分类 : Java 默认处理异常的方式&#xff08;报错&#xff09; : 异常处理方法&#xff1a; try...catch &#xff1a; try...catch...finally&#xff1a; try...catch ....catch.....catch.... 异常对象的常见方法&#xff…

Java中的异常

目录 1. 异常产生的原因和分类 1.1 异常产生的原因 1.2 异常分类 2. 异常的处理 2.1 防御式编程 2.2 异常的抛出&#xff08;throw&#xff09; 2.3 异常的捕获 2.3.1 throws异常声明 2.3.2 try-catch捕获异常并处理 2.3.3 finally 3.自定义异常类 Java中的异常&…

Java异常(超详细!)

1、什么是异常&#xff0c;java提供异常处理机制有什么用&#xff1f; 什么是异常&#xff1a;程序执行过程中的不正常情况。异常的作用&#xff1a;增强程序的 健壮性。 eg. public class ExceptionTest01 {public static void main(String[] args) {int a 10;int b 0;//…

最全最详细的Java异常处理机制

一、异常概述与异常体系结构 异常概述 在使用计算机语言进行项目开发的过程中&#xff0c;即使程序员把代码写得尽善尽美&#xff0c;在系统的运行过程中仍然会遇到一些问题&#xff0c;因为很多问题不是靠代码能够避免的&#xff0c;比如&#xff1a;客户输入数据的格式&…

论文阅读_Heatmap解释

关节的热力图(Heatmap) 每一个关节点,生成一张热力图heatmap, 热力图的响应值作为关节位置的概率或似然. 热力图中数值越大的位置,响应值越大,表示越有可能是关节的位置. 那么构造heatmap实际上是构造了一个中间状态&#xff0c;这个heatmap有如下的一些优点&#xff1a; **1…

R绘图|heatmap

# 1.设置工作目录及调用R包 setwd("D://heatmap") library(vegan) library(RColorBrewer) library(gplots) library(permute) library(lattice)图1 原始数据文件格式。行名为样地名&#xff0c;列名为物种名。 # 2. 读入数据 dir() aoaread.csv("Aspe.csv"…

用Python绘制Heatmap

本文内容为基于python的heatmap的绘制与渲染 文章目录 前言一、Heatmap是什么&#xff1f;二、使用步骤1.引入库2.代码 总结 前言 在写论文时&#xff0c;看到大佬们的文章中精美的图表。却不知道如何进行绘制&#xff0c;本文提供了一种heatmap的绘制方式。 一、Heatmap是什么…

HeatMap(热图)的原理和实现

HeatMap&#xff08;热图&#xff09;的原理和实现 先来看两张图&#xff1a; &#xff08;1&#xff09;10年世界杯决赛&#xff0c;冠军西班牙队中门将、后卫、中场及前锋的跑位热图 通过热图&#xff0c;我们可以很清楚的看出四个球员在比赛中跑动位置的差异。 &#xff…

人体姿态估计-生成heatmap的方法

人体姿态估计-生成heatmap的方法 参考Simple BaseLine生成HeatMap的方法&#xff0c;这里整理进行显示&#xff0c;方便可视化&#xff1a; Simple BaseLine生成HeatMap的方法&#xff1a;human-pose-estimation.pytorch/JointsDataset.py at master microsoft/human-pose-es…

seaborn可视化——一文搞懂heatmap参数

文章目录 datacmaplinewidths、linecolorsquareaxannot指定为True指定为同形状数组 vmax、vminannot_kwsmaskxticklabels、yticklabels设置为auto指定整数指定为True centerrobustfmtcbar 数据使用的是seborn内置数据 官网链接&#xff1a;https://seaborn.pydata.org/generate…

BagNet特征heatmap可视化

BagNet地址&#xff1a;https://github.com/wielandbrendel/bag-of-local-features-models BagNet是ResNet的变体&#xff0c;显著的区别是将3x3卷积变为1x1卷积来达到构造整体网络具有某个最终的感受野(receptive field)目的。在这里主要讲解对于一张来源于ImageNet的尺寸为22…

关键点检测——heatmap热力图法

一、数据集格式 二、解析xml文件&#xff0c;生成data_center.txt from PIL import Image import math,os from xml.etree import ElementTree as ETdef keep_image_size_open(path, size(256, 256)):img Image.open(path)temp max(img.size)mask Image.new(RGB, (temp, te…

Learn OpenCV之Heatmap

本文是利用热图&#xff08;Heatmap&#xff09;分析视频序列的标定。 注意&#xff0c;这里目的不是标定而是分析标定好的数据&#xff0c;或者也可以是检测的结果数据 文章结构是这样的&#xff0c;先详细的解释一下热图分析有什么用&#xff0c;根据一些具体的应用实例给出…

python heatmap画法

任务描述 将一个归一化的分数以热图的形式显示出来&#xff0c;分数高的地方颜色深&#xff0c;分数小的地方颜色浅 注意&#xff1a;使用单一颜色无法实现这种渐变过程 原理 将单通道的0-1之间的score值映射到三通道的颜色空间 原料 一个单通道的score矩阵颜色空间列表&a…