首页 > 其他分享 >异常处理机制(二)之异常处理与捕获

异常处理机制(二)之异常处理与捕获

时间:2023-11-14 09:47:09浏览次数:32  
标签:处理 捕获 try finally catch 异常 代码

一、异常概述

1 Error(错误):
是指程序无法处理的错误,表示运行应用程序时比较严重的问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM(Java 虚拟机)出现的问题。
2 异常(Exception):
是指在程序执行时由于程序处理逻辑上的错误而导致程序中断的一种指令流。通俗的说,就是程序员写的代码错误。
两者的区别:错误无法处理,异常可以被程序本身处理。
image

二、异常分类

异常可以分为编译时异常和运行时异常两种类型。

编译时异常:都是Exception类及其子类,必须显式(手动处理),否则程序就会发生错误,无法通过编译。

运行时异常:都是RuntimeException类及其子类,无需显式处理(手动处理),也可以和编译时异常一样处理。

常见的运行时异常:

    NullPointerException 空指针异常
    ArithmeticException 数学运算异常
    ArrayIndexOutOfBoundsException 数组下标越界异常
    ClassCastException 类型转换异常
    NumberFormatException 数字格式不正确异常

常见的编译异常:

    SQLException 操作数据库时,查询表可能发生异常
    IOException 操作文件时发生的异常
    FileNotFoundException 当操作一个不存在的文件时,发生异常
    ClassNotFoundException 加载类,但是该类不存在时,发生异常
    EOFException 操作文件,到文件末尾,发生异常
    IllegalArguementException 非法参数异常

三、异常的处理

异常捕获指在程序运行过程中,发生了一些不可预测的错误或异常,需要对这些错误或异常进行捕获和处理的过程。在编程中,我们可以使用 try-catch-finally 语句块来进行异常捕获。

  • try:将可能会出错的代码放入 try 块中。
  • catch:当 try 块中的代码出现异常时,程序会跳转到 catch 块去处理异常,防止程序崩溃。
  • finally:不管 try 块中的代码是否正常执行,finally 块中的代码都会被执行,通常用来释放资源。

以下是一个简单的异常处理和捕获的例子:

try {
    // 可能会抛出异常的代码块
} catch (ExceptionType1 e1) {
    // 处理特定类型的异常1
} catch (ExceptionType2 e2) {
    // 处理特定类型的异常2
} finally {
    // 必须执行的代码块
}

在上面的代码中,try块中的代码可能会抛出异常。如果抛出了ExceptionType1类型的异常,将跳转到第一个catch块中处理它。如果抛出了ExceptionType2类型的异常,将跳转到第二个catch块中处理它。无论是否出现异常,finally块中的代码都将执行。

需要注意的是,在Java中,异常处理应该尽可能地处理所有可能的异常,并且应该总是使用try-catch-finally块,即使代码中出现了Unchecked Exception。这样可以确保程序的稳定性和可靠性。

标签:处理,捕获,try,finally,catch,异常,代码
From: https://www.cnblogs.com/xioaliang/p/17830923.html

相关文章

  • docker异常unable to add return rule in DOCKER-ISOLATION-STAGE-1 chain
    docker重装启动异常 INFO[2021-03-09T15:06:20.839195000+08:00]Loadingcontainers:start.INFO[2021-03-09T15:06:20.885624800+08:00]stoppingeventstreamfollowinggracefulshutdownerror="<nil>"module=libcontainerdnamespace=mobyINFO[2021-......
  • Java中ThreadLocal说明 使用线程内变量,完成后需调用remove()方法将其移除,即使异常也
    Java中ThreadLocal说明,完成后需调用remove()方法将其移除,即使异常也记得remove()回收,创建ThreadLocal线程变量publicstaticThreadLocalthreadLocal=newThreadLocal<>();1、ThreadLocal是什么ThreadLocal,即线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储......
  • 中断处理机制解析
    要处理中断,需要有一个中断处理函数。定义如下:irqreturn_t(*irq_handler_t)(intirq,void*dev_id);/***enumirqreturn*@IRQ_NONEinterruptwasnotfromthisdeviceorwasnothandled*@IRQ_HANDLEDinterruptwashandledbythisdevice*@IRQ_WAKE_T......
  • 【C++】【图像处理】均值滤波和高斯滤波(低通滤波)算法解析(以.raw格式的图像为基础进行
    1voidmeanFilter(BYTE*image,intwidth,intheight,BYTE*outImg)2{3//均值滤波4intsmth[9];5inti,j,m,n;6BYTEblock[9];78//高斯卷积核初始化9smth[0]=1,smth[1]=2,smth[2]=1,10smth[3]=2,......
  • Android 11 --关于Toast的异常
    WMS服务关于Toast异常Window和View的关系:Window是View的载体。每个view树都可以看成一个window。view树中的每个view显示次序是固定,activity里面设置一个布局xml文件,最顶层的布局就是view树的根节点。一个自定义布局的Dialog,Dialog的顶层布局就不属于activity的View树,这是2......
  • Object.defineProperty(obj,key,val)不可以监听数组变化,需要做特殊处理,所以Vue3.0使用
    关于Vue双向数据绑定说法错误的是()AVue实现双向数据绑定是采用数据劫持和发布者-订阅者模式BObject.defineProperty(obj,key,val)可以监听数组变化,不需要做特殊处理CVue2.0数据劫持是利用ES5的Object.defineProperty(obj,key,val)方法来劫持每个属性的getter和setterD......
  • Java文件处理(一):创建文件、遍历文件夹、删除文件/文件夹
    本篇以代码为核心,在实践中自学吧年轻人~非常好迭代作业,爱来自BUAAFile对象要进行文件处理肯定需要File类啦。File的实例是一个实例(?),但是可以链接到本地的文件、文件夹,并对它们进行操作。从下面的一些示例中可以看到,同一份本地文件可以拥有多个File对象;同时,构造一个File对象......
  • Function 函数式接口 处理if else过多的问题
    使用注解@FunctionalInterface标识,并且只包含一个抽象方法的接口是函数式接口。函数式接口主要分为Supplier供给型函数、Consumer消费型函数、Runnable无参无返回型函数和Function有参有返回型函数 处理if分支操作1、定义函数定义一个抛出异常的形式的函数式接口,这个接口......
  • 异常处理机制(二)之异常捕获
    1.try…catch代码如下:单个捕获异常 如有异常会进入catch中输出异常!!!2.try…catch…catch多个捕获异常 进入异常代码块后try会终止运行3.try…catch…finally捕获异常并输出finally代码块 注:finally代码块只要不是系统异常终止都会运行4.try…finally代......
  • 异常处理机制(三)常见异常
    一、认识异常在Java中所有的异常(Exception)和错误(Error)都继承了同一个父类Throwable,他们的关系如下: 二、常见的运行时异常2.1空指针异常(NullPointerException):代码如下: 异常如下: 2.2数组下标越界异常(ArrayIndexOutOfBoundsException):代码如下: 异常......