java异常级别与捕获的示例代码

这个是jdk 1.8文档中异常的种族描述

可以看出Java异常体系的根类是 Throwable, 当在java代码中写throw抛出异常时,后面跟的对象必然是Throwable或其子类的对象。
然后往下又分为 Exception(异常) 和 Error

其中Exception异常是指一些可以恢复的异常, 例如常见的NullPointerException空指针异常。

Error指的是一些致命的错误,无法通过程序代码手段恢复的异常,例如OutOfMemoryError内存溢出错误。

如果能善用异常机制那么代码使用就会大大提高

本次模拟一个异常实例,验证一下异常的捕获
代码如下

public class ExceptionTest {

    public static void main(String[] args) {

        try{
            int i = subtraction();
            System.out.println(i);
        }catch (Exception e){
            System.out.println("异常 Exception 被捕获 异常信息为:"+e);
            e.printStackTrace();
        }

    }

    public static int subtraction(){
        int result = 0;
        try {
             result = 10 / 0;
        }catch (RuntimeException e){
            System.out.println("运行异常 RuntimeException 被捕获 异常信息"+e);
            throw new RuntimeException("运行异常");
        }
        return result;
    }

}

我在调用一个方法的时候,该方法会抛出一个runtimeException 异常
然后我调用此方法的程序可能会有其他处理操作,也做了个try…catch 处理,然后验证 主方法的catch是否会执行
结果证明会执行

因为被调用的方法使用throw new RuntimeException("运行异常");
把异常给抛出来了,上面抓到异常以后就会执行
我就是在工作中犯了此错误,
由于我在被调用方法catch的时候,给程序中的数据赋予,调用失败的状态,结果异常又被调用方给捕获,然后调用方的catch又将数据状态改为未知异常,影响了结果的判断
最终我将调用方代码合并上去,然后多做了一个捕获

public static void main(String[] args) {

        try{
            int a = 100 / 0;
        }catch (RuntimeException e){
            System.out.println("运行异常 RuntimeException 异常信息为:"+e);
            throw new RuntimeException(e);
        }catch (Exception e){
            System.out.println("运行异常 Exception 异常信息为:"+e);
        }
    }

这次只运行了RuntimeException 的catch 尽管异常已经抛出,但是Exception 的catch依旧是没有执行

到此这篇关于java异常级别与捕获的示例代码的文章就介绍到这了,更多相关java捕获异常内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解析Java中未被捕获的异常以及try语句的嵌套使用

    Java未被捕获的异常 在你学习在程序中处理异常之前,看一看如果你不处理它们会有什么情况发生是很有好处的.下面的小程序包括一个故意导致被零除错误的表达式. class Exc0 { public static void main(String args[]) { int d = 0; int a = 42 / d; } } 当Java运行时系统检查到被零除的情况,它构造一个新的异常对象然后抛出该异常.这导致Exc0的执行停止,因为一旦一个异常被抛出,它必须被一个异常处理程序捕获并且被立即处理.该

  • java多线程编程之捕获子线程异常示例

    通过try catch是无法捕获子线程异常的,Thread对象提供了setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)方法用来获取线程中产生的异常. 复制代码 代码如下: package threads; import java.lang.Thread.UncaughtExceptionHandler; public class TextException{  public static void main(String

  • java进行error捕获和处理示例(java异常捕获)

    下面给个小例子,来验证一下error的捕获. 复制代码 代码如下: public class TestCatchError extends Error{ private static final long serialVersionUID = -351488225420878020L; public TestCatchError(){        super();    } public TestCatchError(String msg){        super(msg);    } p

  • java捕获异常信息存入txt文件示例

    捕获程序中出现的异常 可用于后期维护的必要性!做简单的测试 ! 复制代码 代码如下: package helpEntity; import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date; p

  • java异常处理机制示例(java抛出异常、捕获、断言)

    这是一个介绍基本异常处理的小例子,包括抛出,捕获,断言,日志. Java异常处理通过5个关键字try.catch.throw.throws.finally进行管理.基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出.你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象. 复制代码 代码如下: package

  • java实现系统捕获异常发送邮件案例

    在实际运用中,比如你淘宝购物,申请退款,这时你在邮箱中看到退款邮件,或者你注册某个账号,申请验证邮箱通知等等,这些都是邮件发送,这里将介绍下系统捕获异常发送邮件案例. 准备工作: eclipse4.5 64位 jdk1.7 64位 邮件发送所需jar: fastjson-1.1.24.jar,javax.mail-1.5.6.jar 类Developer: 枚举类型,发送邮件人姓名和邮箱地址 package mail; /** * @class:Developer *@descript:枚举类型

  • java异常级别与捕获的示例代码

    这个是jdk 1.8文档中异常的种族描述 可以看出Java异常体系的根类是 Throwable, 当在java代码中写throw抛出异常时,后面跟的对象必然是Throwable或其子类的对象. 然后往下又分为 Exception(异常) 和 Error 其中Exception异常是指一些可以恢复的异常, 例如常见的NullPointerException空指针异常. Error指的是一些致命的错误,无法通过程序代码手段恢复的异常,例如OutOfMemoryError内存溢出错误. 如果能善用异常

  • Java异常退出条件的判断示例代码

    无论是功能性代码还是算法性代码,程序都是一系列流程的合集 既然是流程就分为:一般流程和异常流程: 一般流程保证了基本功能: 异常流程则是对程序稳定性的保证,不能因为一些非法输入,项目就挂了: 注意,布尔表达式的先后顺序,有时不可以交换 if (null == instance || instance.isEmpty()) 0. 常见异常退出条件 参数为空: 表示长度,表示索引的整型为负数,或者超出待索引数组或容器的范围: 1. String 的 startsWith 函数 首先来看 String

  • Java多线程编程实现socket通信示例代码

    流传于网络上有关Java多线程通信的编程实例有很多,这一篇还算比较不错,代码可用.下面看看具体内容. TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议.通过TCP协议传输,得到的是一个顺序的无差错的数据流.发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以

  • java poi导出图片到excel示例代码

    本文实例为大家分享了java使用poi导出图片到Excel的具体代码,供大家参考,具体内容如下 代码实现 Controller /** * 导出志愿者/人才数据 * @param talent_type * @return */ @RequestMapping("/exportData") public void exportData(Integer talent_type, HttpServletResponse response) { String fileId = UUID.ra

  • Java常用工具类汇总 附示例代码

    一.FileUtils private static void fileUtilsTest() { try { //读取文件内容 String readFileToString = FileUtils.readFileToString(new File("D:\\guor\\data\\test20211022000000.txt")); System.out.println(readFileToString); //删除文件夹 FileUtils.deleteDirectory(ne

  • Java定时调用.ktr文件的示例代码(解决方案)

    1.Maven依赖 <!-- Kettle --> <dependency> <groupId>pentaho-kettle</groupId> <artifactId>kettle-core</artifactId> <version>7.1.0.0-12</version> </dependency> <dependency> <groupId>pentaho-kettl

  • Java实现byte[]转List的示例代码

    目录 前言 Maven依赖 代码 补充 前言 其实这个工具是给自己写的,因为自己老是忘记.所以记录一下. Maven依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1.1-jre</version> </dependency> 代码 package ai.guiji.cs

  • Java实现模拟机器人对话的示例代码

    目录 前言 一.Java多线程的介绍 二.创建线程并运行 三.多线程间的交互 前言 今天带大家来体验一下Java多线程,首先我们要明白什么是线程?什么是多线程? 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在Windows系统中,一个运行的exe就是一个进程. 线程是指进程中的一个执行流程,一个进程可以运行多个线程.比如java.exe进程可以运行很多线程.线程总是输入某个进程,进程中的多个线程共享进程的内存. 多线程指的是这个程序(一个

  • Java Kafka实现延迟队列的示例代码

    目录 基于kafka如何实现延迟队列 完善细节 Java代码实现 还需要做什么 kafka作为一个使用广泛的消息队列,很多人都不会陌生,但当你在网上搜索“kafka 延迟队列”,出现的都是一些讲解时间轮或者只是提供了一些思路,并没有一份真实可用的代码实现,今天我们就来打破这个现象,提供一份可运行的代码,抛砖引玉,吸引更多的大神来分享. 基于kafka如何实现延迟队列 想要解决一个问题,我们需要先分解问题.kafka作为一个高性能的消息队列,只要消费能力足够,发出的消息都是会立刻收到的,因此我们需

  • Java实现AI五子棋游戏的示例代码

    目录 前言 实现过程 抽象 实现AI接口 评估函数 前言 本文只是介绍五子棋AI的实现,最终的成品只是一个 AI 接口,并不包括 GUI,且不依赖 GUI. 五子棋 AI 的实现并不难,只需要解决一个问题就行: 怎么确定AI的最佳落子位置? 一般情况下,五子棋棋盘是由15条横线和15条纵线组合而成的,15x15 的棋盘共有 225 个交叉点,也就是说共有 225 个落子点. 假如说,AI 是黑棋,先行落子,所以 AI 总共有 225 个落子点可以选择,我们可以对每个落子点进行评估打分,哪个分高下

随机推荐