【Java异常】处理异常

news2025/1/31 11:16:32
一:异常的处理:抓抛处理
过程一:"抛":程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象
        并将此对象抛出
        一旦抛出对象以后,其后的代码不再执行
过程二:"抓":可以理解为异常的处理方式:
                     ① try - catch - finally
                     ② throws
二:try-catch-finally的使用
  try{
       //可能出现异常的代码
  }catch(异常类型1 变量名1){
      //处理异常的方式1
  }catch(异常类型2 变量名2){
       //处理异常的方式2
  }
  ....
  finally{
      //一定会执行的代码
  }

举例:

public class ExceptionTest1 {
    @Test
    public void test1(){
        String str = "123";
        str = "abc";

        int num = 0;
        try{
            num = Integer.parseInt(str);
        }catch (NumberFormatException e){
            System.out.println("出现数值转化异常,不要着急..........");
        }catch (NullPointerException e){
            System.out.println("出现空指针异常了,不要着急..........");
        }catch (Exception e){
            System.out.println("出现异常了,不要着急.........");
        }
        System.out.println(num);

        System.out.println("hello----2");
    }
}

运行结果如下:

 

 还有两种常见的异常处理方式:

e.printStackTrace();

public class ExceptionTest1 {
    @Test
    public void test1(){
        String str = "123";
        str = "abc";

        int num = 0;
        try{
            num = Integer.parseInt(str);
        }catch (NumberFormatException e){
//          System.out.println("出现数值转化异常,不要着急..........");
            e.printStackTrace();
        }catch (NullPointerException e){
            System.out.println("出现空指针异常了,不要着急..........");
        }catch (Exception e){
            System.out.println("出现异常了,不要着急.........");
        }
        System.out.println(num);

        System.out.println("hello----2");
    }
}

运行结果:

e.getMessage() ----->返回一个字符串

 System.out.println(e.getMessage());

public class ExceptionTest1 {
    @Test
    public void test1(){
        String str = "123";
        str = "abc";

        int num = 0;
        try{
            num = Integer.parseInt(str);
        }catch (NumberFormatException e){
//          System.out.println("出现数值转化异常,不要着急..........");
//            e.printStackTrace();
            System.out.println(e.getMessage());
        }catch (NullPointerException e){
            System.out.println("出现空指针异常了,不要着急..........");
        }catch (Exception e){
            System.out.println("出现异常了,不要着急.........");
        }
        System.out.println(num);

        System.out.println("hello----2");
    }
}

 运行结果:

 注意:catch中的异常类型声明的顺序

举例:将上文代码的catch的异常顺序交换

 

综上所述 :catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面,否则报错

=================================我是分割线=============================================
总结:
     1.finally是可选的
     2.使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个异常类的对象根据此对象的类型,去catch中进行匹配
      3.一旦try中的异常对象匹配到某一个catch时,就会进入catch中进行异常处理一旦处理完成,就跳出当前的try—catch结构(在没有写finally的情况)继续执行其后的代码
      4.catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面,否则报错
      5.常用的异常对象处理的方式:
         ① String getMessage()
         ② printStackTrace()
      6.在try结构中声明的变量,再出了try结构以后,就不能别调用了
体会:使用try-catch-finally处理编译时异常,使得程序在编译就不在报错,但是运行时任可能报错
     先当与我们使用try-catch-finally将一个编译时可能出现异常,延迟到运行时出现

感谢观看!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科班演员陶弈菱:北京电影学院的系统学习是我艺术道路上最大的底气

今天的记忆是带着海水的味道………”12月18日,在年末岁尾之际,徽风皖韵熏陶下成长的新生代演员陶奕菱再次来到海南三亚,受邀参加第四届海南岛国际电影节,迫不及待地跑向沙滩面朝大海,感受多姿多彩的魅力三亚。 优雅端…

在 React 中应用设计模式:策略模式

这篇文章是关于我们许多人在 React 和前端开发中遇到的一个问题(有时甚至没有意识到这是一个问题):在不同的组件、钩子、实用程序等中实现了一段逻辑。 让我们深入了解问题的详细信息以及如何解决它。正如标题所暗示的,我们将使用…

DPDK-收包完整过程

本篇博客作为自己了解dpdk收包过程的一个记录。在写时发现已经有很多写DPDK收包过程的博客了,但还是决定自己写一遍。 DPDK收包分为两个阶段,首先是DMA将数据包从网卡搬运到内存,然后是调用dpdk提供的接口rte_eth_rx_burst去取。但是具体是怎…

Oracle和其他数据库有什么区别?从引号开始了解!

无论测试或者开发,对数据库的增删改查都是家常便饭。但有些小知识是经常被忽略,却又不能不去了解的,例如单引号和双引号的用法和区别,看完这一篇,你肯定会有收获。 首先我们要区别一个概念,即单引号(‘)和…

【Java语言】— Java基础02

1.数据类型 (1)数据类型的作用 数据类型就是约束变量存储数据的形式。 数据类型 变量名称初始值;(2)数据类型的分类 引用数据类型(除基本数据类型之外的,如String)基本数据类型:4大类8种。 …

如何从 0 开始学 Python 自动化测试开发(一)

本文是「如何从 0 开始学 Python 自动化测试开发」专题系列文章第一篇,适合零基础入门的同学。 作者方程老师,是前某跨国通信公司高级测试经理,目前为某互联网名企资深测试技术专家,也是霍格沃兹测试学院特邀讲师。有十余年大型电…

项目管理软件怎么选?只需要关注4点

项目管理有许多不同的风格,但无论如何管理项目,根据企业的当前需求和未来发展轨迹选择合适的项目管理软件都很重要。 虽然大多数优秀的项目管理软件都提供相似的功能,但没有两个平台是完全相同的。以下是企业在选择项目管理软件时应该考虑的…

【虹科新闻】虹科与SOSLAB正式建立合作伙伴关系

近日,虹科与SOSLAB正式建立合作伙伴关系,虹科将共同与SOSLAB开展亚太地区市场开发,聚焦于工业领域客户开拓,深入本地技术支持、测试与售后服务落地,为客户提供高效、可靠的激光雷达解决方案。 “虹科很高兴与SOSLAB合作…

锁等待超时

问题背景 今天测试同事发现项目里面大部分接口报错,把日志捞出来看了下出现大量的锁等待超时的错误。 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transactionat sun.reflect.N…

MULLS: Versatile LiDAR SLAM via Multi-metric Linear Least Square论文阅读

1. 摘要 随着自动驾驶与移动建图的快速发展,实际项目中对现成的激光SLAM建图方案的需求也越来越强烈,并且要求解决方案适用于各种不同规格的激光雷达与各种复杂场景。因此,我们提出了MULLS,一种高效,低漂移&#xff0…

状态观测控制器设计与仿真验证

【无限嚣张(菜菜)】:hello您好,我是菜菜,很高兴您能来访我的博客,我是一名爱好编程学习研究的菜菜,每天分享自己的学习,想法,博客来源与自己的学习项目以及编程中遇到问题…

深度学习炼丹-数据处理和增强

前言一,Normalization 概述 1.1,Normalization 定义1.2,什么情况需要 Normalization1.3,Data Normalization 方法1.4,示例代码 二,normalize images 2.1,图像 normalization 定义2.2&#xff0c…

[XCTF]halo(2019护网杯)(难度2)

目录 前言 一、题目重述 二、解题思路 1.Base64解密 2.难以想到的异或运算 三、flag 总结 前言 注意!攻防世界题目有误!!给出题目与原题不一样但是答案却和护网杯原题答案一样!! 一、题目重述 aWdxNDs0NDFSOz…

NVM Express Base Specification 2.0c - 2 Theory of Operation

The interface has the following key attributes: 在命令提交或完成路径中不需要非缓存/ MMIO寄存器读取;在命令提交路径中最多需要一个MMIO寄存器写或一个64B消息;支持多达65,535个I/O队列,每个I/O队列支持多达65,535个未完成的命令;优先级与每个I/O队列相关联&a…

【MySQL】基于InnoDB的数据库索引

文章目录前言1、索引引入2、索引语法2.1、创建索引2.2、查看索引2.3、删除索引2.4、案例引入3、索引结构3.1、概述3.2、引擎支持3.3、BTree3.4、Hash4、索引类别4.1、分类4.2、过程分析5、性能分析5.1、执行频率5.2、慢查询日志5.3、explain6、最左前缀原则7、索引失效7.1、范围…

2023年学一门IT技术的最佳选择就是软件测试!

互联网行业的不断发展,也增加了IT行业的就业机会,作为最适合零基础小白入行、门槛低的软件测试岗位来说,也受到越来越多转行者的关注,但是耳边依然充斥着各种关于这个行业不好的言论,诸如“行业饱和了,学完…

华为OD机试真题 Python 实现【最长连续方波信号】

目录 题目 思路 考点 Code 题目 输入一串方波信号,求取最长的完全连续交替方波信号,并将其输出,如果有相同长度的交替方波信号,输出任一即可, 方波信号高位用1标识,低位用0标识,如图: 说明: 1) 一个完整的信号一定以0开始然后以0结尾,即010是一个完整信号,但10…

【自动化】【autojs】02 autox环境搭建和踩坑

▒ 目录 ▒🛫 导读需求开发环境1️⃣ 环境搭建AutoXadbVSCode插件scrcpy2️⃣ ADB方式实战控制微信启动正确设置autox选项启动服务执行代码停止代码执行3️⃣ 踩坑函数id需要传递全名称app.launch未生效ui.layout报错📖 参考资料🛫 导读 需求…

基于区块链技术的信息服务新架构探讨

【摘 要】为探索区块链技术对信息通信基础架构的影响及实现,在梳理信息技术架构和信息服务架构演进的基础上,分析了区块链新型数字化分布式账本体系赋予数字世界生产关系升级的功能,并基于“云-管-端-边”信息服务架构研究了区块链技术实现信息物理空间中“设备民主”的具体…

EL表达式与JSTL标签库(JSP标准标签库)

EL表达式 EL 全名为Expression Language,是表达式语言。 EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出。因为EL表达式在输出数据的时候,要比jsp的表达式脚本要简洁很多。 不需要加任何jar包。不依赖任何其它库。提供了在脚本元素…