首页 > 其他分享 >异常处理机制

异常处理机制

时间:2024-08-05 15:39:14浏览次数:10  
标签:Exception 处理 抛出 throw catch 机制 异常 throws

异常处理机制

目录

捕捉异常

try……catch来捕获错误

try {
    String s = processFile(“C:\\test.txt”);
    // ok:
} catch (FileNotFoundException e) {
    // file not found:
} catch (SecurityException e) {
    // no read permission:
} catch (IOException e) {
    // io error:
} catch (Exception e) {
    // other error:
}

  • 这个过程将一直继续下去,直到异常被处理。这一过程称为捕获(catch)异常。如果一个异常回到 main() 方法,并且 main() 也不处理,则程序运行终止
  • 必须捕获的异常,包括Exception及其子类,但不包括RuntimeException及其子类,这种类型的异常称为Checked Exception。 不需要捕获的异常,包括Error及其子类,RuntimeException及其子类。

多个catch和finally

public static void main(String[] args) {
    try {
        process1();
        process2();
        process3();
    } catch (UnsupportedEncodingException e) {
        System.out.println("Bad encoding");
    } catch (IOException e) {
        System.out.println("IO error");
    } finally {
        System.out.println("END");
    }
}

抛出异常

在Java中,throwthrows 关键字都是与异常处理相关的,但它们的用法和目的不同:

throw

  • throw 关键字用于在代码中手动抛出一个异常。它可以用来抛出任何类型的 Throwable 对象,包括 ErrorException 及其子类。
  • throw 后面通常跟一个异常对象,这个对象可以是Java内置的异常类型,也可以是用户自定义的异常类型。
  • throw 可以在任何代码块中使用,包括 trycatchfinally 块之外。

throws

  • throws 关键字用于在方法签名中声明该方法可能会抛出的异常类型。这相当于是一个“提前告知”,告诉调用者这个方法在执行过程中可能会抛出的异常类型。
  • throws 后面跟着的是异常类型的列表,调用者需要处理这些异常,要么通过 try-catch 块捕获它们,要么在调用该方法的其它方法的签名中继续使用 throws 声明。
  • throws 只能用于方法的声明中。

下面是 throwthrows 的使用示例:

public class ExceptionExample {
    
    // 使用 throw 抛出一个异常
    public static void checkValue(int value) throws Exception {
        if (value < 0) {
            throw new Exception("Negative value is not allowed.");
        }
    }

    // 使用 throws 声明方法可能会抛出的异常
    public static void main(String[] args) {
        try {
            checkValue(-1);
        } catch (Exception e) {
            System.out.println("Caught an exception: " + e.getMessage());
        }
    }
}

在这个示例中,checkValue 方法使用 throw 抛出了一个 Exception 对象,因为它检测到一个负值。同时,checkValue 方法的声明中使用了 throws 关键字来声明它可能会抛出 Exception

总结区别:

  • throw 是用来抛出一个异常实例。
  • throws 是用来声明方法可能会抛出的异常类型。

异常的传播

public class Main {
    public static void main(String[] args) {
        try {
            process1();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    static void process1() {
        process2();
    }
    
    static void process2() {
        Integer.parseInt(null); // 会抛出NumberFormatException
    }

}

标签:Exception,处理,抛出,throw,catch,机制,异常,throws
From: https://www.cnblogs.com/luoyiwen123/p/18343338

相关文章

  • 什么是异常
    异常是发生在程序执行过程中阻碍程序正常执行的错误操作,只要在Java语句执行中产生异常则一个异常对象就会被创建。Throwable是所有异常的父类,它有两个直接子类Error和Exception,其中Exception又被继续划分为被检查的异常(checkedexception)和运行时的异常(runtimeexception......
  • CF1993D-二分+dp处理中位数
    CF1993D-二分+dp处理中位数大致题意给定两个正整数n和k以及另一个由n个整数组成的数组a。在一次操作中,可以选择a的任意一个大小为k的子数组,然后将其从数组中删除,而不改变其他元素的顺序。更正式地说,假设$(l,r)$是对子数组\(a_l,a_{l+1},…,a_r\)的操作,使得\(r......
  • 【Java基础知识5】异常
    一、什么是异常?正常程序所不能处理或没有处理的不正常行为称为异常。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。二、异常的层次结构三、异常的分类1.Throwable异常体系的顶层类,其派生出两个重要的子类, Error 和......
  • 异常
    异常1.什么是异常在Java中,异常(Exception)是指程序执行过程中可能出现的不正常情况或错误。它是一个事件,会干扰程序的正常执行流程,并可能导致程序出现错误或崩溃。异常在Java中是以对象的形式表示的,这些对象是从java.lang.Throwable类或其子类派生而来。定义:异常是在程序执行期间......
  • 使用 clearError 清除已处理的错误
    title:使用clearError清除已处理的错误date:2024/8/5updated:2024/8/5author:cmdragonexcerpt:摘要:“文章介绍了clearError函数的作用与用法,用于清除已处理的错误并可实现页面重定向,提升用户体验。通过示例展示了在表单提交场景中如何应用此函数进行错误处理和状态......
  • 基于图像处理的火焰检测算法(颜色+边缘)
    介绍    由于经常发生大面积火灾,对人类健康和安全造成影响,火灾探测作为工具的应用越来越多。当前基于电子传感器的检测方法通常依赖于热和压力传感器。然而这些方法有一个致命的缺陷,即它们只有在达到一定条件时才会起作用。在最坏的情况下,传感器损坏或配置不正确可能会......
  • C语言--轮圈机制
    数据是以二进制补码形式存储在计算机内存中,而数据类型限制了数据的大小,种类,范围,精度等。在存储二进制数据时,常常遇到存储的数值超出数据类型范围的情况。而这时的存储原理又是怎样的呢?根据实践,不难总结出一个规律,计算机存储的数据在一个范围内循环。如下图所示。有符号和无符......
  • 服务异常,报too many open files
    "toomanyopenfiles"错误表示进程打开的文件句柄数量超出了操作系统允许的最大限制。解决方法:临时增加限制:可以使用命令 ulimit-n<数量> 来临时提升当前shell会话中的打开文件数量限制。永久增加限制:编辑 /etc/security/limits.conf 文件,添加或修改相应的行来......
  • 文本相似度 HanPL汉语言处理
    @目录前言需求简介实操开始1.添加pom.xml依赖2.文本相似度工具类3.案例验证4.验证结果总结前言请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、提示:以下是本篇文章正文内容,下面案例可供参考需求当我们需要求两个或两个以上的字符串相似度百分比时,可以使用HanLP......
  • seaweedfs-csi-driver 运行异常:volume hasn't been staged yet
     Defaultedcontainer"csi-seaweedfs-plugin"outof:csi-seaweedfs-plugin,driver-registrar,csi-liveness-probeI080109:12:04.188240main.go:73willrunnode:true,controller:false,attacher:trueI080109:12:04.188817main.go:79connectto......