认识Java中的异常处理

news2024/11/17 23:24:32

文章目录

    • Java异常处理
      • 异常体系的介绍
      • 常见运行时异常
      • 常见编译时异常

Java异常处理

异常体系的介绍

什么事异常处理?

异常是程序在“编译”或者“执行”的过程中可能出现的问题,比如: 数组索引越界、空指针异常、 日期格式化异常,等…

注意:语法错误不算在异常体系中。

为什么要学习异常?

异常一旦出现了,如果没有提前处理,程序就会退出JVM虚拟机而终止.

研究异常是为了避免异常,然后提前处理异常,体现的是程序的安全, 健壮性。

在这里插入图片描述

Error:是系统级别问题、JVM退出等,代码无法控制

Exception:java.lang包下,称为异常类,它表示程序本身可以处理的问题

  • RuntimeException及其子类:统称为运行时异常,编译阶段不会报错。 (空指针异常,数组索引越界异常)
  • 除RuntimeException之外所有的异常:统称为编译时异常,编译期必须处理的,否则程序不能通过编译。 (日期格式化异常)。

编译时异常和运行时异常:

在这里插入图片描述

简单来说:

编译时异常就是在编译的时候出现的异常,

运行时异常就是在运行时出现的异常。

常见运行时异常

运行时异常;

直接继承自RuntimeException或者其子类,编译阶段不会报错,运行时可能出现的错误。

常见的运行时异常示例:

数组索引越界异常: ArrayIndexOutOfBoundsException

public static void main(String[] args) {
    // 数组索引越界异常: ArrayIndexOutOfBoundsException
    int[] arr = {10, 20, 40};
    System.out.println(arr[0]);
    System.out.println(arr[1]);
    System.out.println(arr[2]);
    System.out.println(arr[3]); // 越界

    // 异常提示: 
    // Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
    //	at com.chenyq.d6_exception.ExceptionDemo.main(ExceptionDemo.java:11)
}

空指针异常 : NullPointerException,直接输出没有问题,但是调用空指针的变量的功能就会报错。

public static void main(String[] args) {
    String name = null;
    System.out.println(name.length()); // 空指针异常

    // 异常信息:
    // Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "name" is null
    //	at com.chenyq.d6_exception.ExceptionDemo2.main(ExceptionDemo2.java:6)
}

数学操作异常:ArithmeticException

public static void main(String[] args) {
    int c = 20 / 0; // 数学异常, 分母不能为0

    // 异常信息:
    // Exception in thread "main" java.lang.ArithmeticException: / by zero
    //	at com.chenyq.d6_exception.ExceptionDemo4.main(ExceptionDemo4.java:5)
}

类型转换异常:ClassCastException

public static void main(String[] args) {
        Object obj = 12;
    String str = (String) obj; // 类型转换异常

    // 异常信息
    // Exception in thread "main" java.lang.ClassCastException: class java.lang.Integer cannot be cast to class
    // java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')
    //	at com.chenyq.d6_exception.ExceptionDemo3.main(ExceptionDemo3.java:6
}

数字转换异常: NumberFormatException

public static void main(String[] args) {
    String num1 = "23"; // 可以正常转换
    Integer res1 = Integer.valueOf(num1);
    System.out.println(res1 + 1);

    String num2 = "23aaa"; // 不可以正常转换 数字转换异常
    Integer res2 = Integer.valueOf(num2);
    System.out.println(res2 + 1);

    // 异常信息
    // Exception in thread "main" java.lang.NumberFormatException: For input string: "23aaa"
    //	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
    //	at java.base/java.lang.Integer.parseInt(Integer.java:668)
    //	at java.base/java.lang.Integer.valueOf(Integer.java:999)
    //	at com.chenyq.d6_exception.ExceptionDemo5.main(ExceptionDemo5.java:10)
}

运行时异常:一般是程序员业务没有考虑好或者是编程逻辑不严谨引起的程序错误,自己水平问题

常见编译时异常

编译时异常:

不是RuntimeException或者其子类的异常,编译阶段就报错(代码写出来就报错),必须处理,否则代码不通过

编译时异常示例:

在这里插入图片描述

编译时异常的作用是什么:

是担心程序员的技术不行,在编译阶段就爆出一个错误, 目的在于提醒代码可能有错误

编译时异常是可遇不可求, 遇到了解决即可。

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

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

相关文章

常用损失函数

常见损失函数 文章目录常见损失函数引言回归1. 均方差2.平均绝对误差(MAE)3. 均方根误差(RMSE)4. 交叉熵分类二分类多分类引言 无论在机器学习还是深度领域中,损失函数都是一个非常重要的知识点。损失函数(Loss Function)是用来估量模型的预测值 f(x) 与…

Eslint 8.23 Flat Config 新配置迁移升级指南

前言 直入正题,eslint 目前为止的配置文件格式( 如 .eslintrc.js ) 存在很多无法避免的历史问题: 配置格式混乱,层层不明确的继承,不易理解。 插件配置时不支持实体运用(不能传 function / ob…

学完框架后的反思—为什么要使用框架?

学习前端也有一定的时间了,最近在网上看到了一个问题让我反思了很久——为什么要使用前端框架? 我发现自己当初学习框架时并没有想那么多,只是看中了其在业界企业的应用,大部分公司开发页面基本上都是使用框架进行开发的,而最为被大厂广泛接受的就是 React 框架,所以我当…

二棕榈酰磷酯酰乙醇胺-聚乙二醇-叠氮 DPPE-PEG-N3简介,可用于药物传递、基因转染和生物分子修饰。

二棕榈酰磷酯酰乙醇胺-聚乙二醇-叠氮 DPPE-PEG-N3 中文名称:二棕榈酰磷酯酰乙醇胺-聚乙二醇-叠氮基 英文名称:DPPE-PEG-N3 英文别名: 1,2-dipalmitoyl-sn-glycero-3-phosphoethanolamine-PEG-Azide 分子量(PEG)&a…

Linux——任务调度

at定时任务 基本介绍 at命令是一次性定时计划任务,at地守护线程atd会以后台模式运行,检查作业队列来运行默认情况下,atd守护进程没60秒检查作业队列,有作业时,会检查作业运行时间,如果时间于当前时间匹配…

Dubbo 1 分布式系统中的相关概念 1.2 集群和 分布式

Dubbo 【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】 1 分布式系统中的相关概念 文章目录Dubbo1 分布式系统中的相关概念1.2 集群和 分布式1.2.1 集群和分布式1.2.2 集群和分布式 【互联网 中】1.2 集群和 分布式 1.2.1 集群和分布式 集群:很…

使用synchornized和ReentrantLock来解决并发错误

文章目录什么是并发错误?并发错误是如何产生的?演示并发错误如何解决并发错误使用synchornized解决并发错误使用ReentrantLock解决并发错误什么是并发错误? 多个线程共享操作同一个对象的时候,线程体当中连续的多行操作未必能够连…

下个文档还要马内?还好我会Python,教大家来一手强制复制粘贴

前因后果 公司有人阳了,今天在家上班,突然小姨子就问我有没有baidu文库会员,想下载点东西,我心想这还要会员?用Python不是分分钟的事情! 然后我非常自信的告诉她不用会员随便下载,结果她顺势想…

10两级电力市场环境下计及风险的省间交易商最优购电模型

参考文章: 两级电力市场环境下计及风险的省间交易商最优购电模型—郭立邦(电网技术2019) 主要内容: 为进一步推动电力市场建设,促进电力资源大范围优化配置,我国正逐步建成包含省间与省内电力交易的两级…

齿轮魔方、五阶齿轮魔方

齿轮魔方 1,魔方三要素 (1)组成部件 部件和三阶魔方完全对应,但每个棱块的朝向不止2种,而是有6种。 (2)可执行操作 只有3种操作,即上下层同时旋转180度、左右180度、前后180度。…

一文助你快速理解Cookie,Session,Token的区别

目录 一、Cookie简介 1.1.cookie定义 1.2.cookie鉴权原理 1.3.cookie的分类 二、Session简介 2.1.session的定义 2.2.session会话机制 2.3.Session 的缺点 三、cookie与session区别 3.1.存储位置 3.2.安全性 3.3.占用服务器资源 3.4.存储空间 3.5.存储类型 3.6.…

编程入门宝典,刚开始学习编程新手必看的5点建议!

编程就像围城,城里的人想出去,城外的人想进来。 对于零基础的小白,要杀入代码的战场需要准备好哪些东西呢?最帅的萌宝在此给大家分享5点建议。 1、选择编程语言 编程首要还是选择好适合自己的语言。 编程语言有:C/C、java、VB、P…

零基础学Python:编程规范

1. 注释 python注释也有自己的规范,在文章中会介绍到。注释可以起到一个备注的作用,团队合作的时候,个人编写的代码经常会被多人调用,为了让别人能更容易理解代码的通途,使用注释是非常有效的。 在说规范之前我们有必…

微服务综合部署——SpringBoot项目制作Docker镜像注册在Zookeeper并利用K8S技术部署

一、如果你要从头开发一个基于微服务架构的项目,项目中的服务最终要部署在k8s管理的镜像环境中,你认为应如何创建项目?与本次实验过程相比,哪些改进可以让开发更加合理高效? 第一步:搭建项目并制作合适的j…

回溯算法总结

目录介绍伪代码例题:解释:回溯算法中的优化去重伪代码剪枝常见题型子集例题全排列例题参考资料介绍 递归(DFS)是一个劲的往某一个方向搜索,而回溯算法建立在 DFS 基础之上的,但不同的是在搜索过程中,达到结束条件后&am…

SAP ABAP 扫描 ABAP 源代码(RS_ABAP_SOURCE_SCAN)

SAP ABAP 扫描 ABAP 源代码(RS_ABAP_SOURCE_SCAN) 引言: RS_ABAP_SOURCE_SCAN 是一个 SAP 标准 ABAP 报表程序,通过输入字符串文本,扫描 ABAP 源代码,列示查找字符串在 ABAP 源代码中出现的位置清单。本文…

20行python代码的入门级小游戏

0、背景: 作为一个python小白,今天从菜鸟教程上看了一些python的教程,看到了python的一些语法,对比起来(有其他语言功底),感觉还是非常有趣,就随手添了一点内容,改了一个…

【车载开发系列】CAN总线通信---总线报文格式

【车载开发系列】CAN总线通信—总线报文格式 CAN总线通信---总线报文格式【车载开发系列】CAN总线通信---总线报文格式一.什么是ISO15765二.ISO15765的目的三.单帧传输的概念四.多帧传输的概念五.诊断报文格式1)首帧FF2)连续帧CF3)流控帧FC4&…

【JavaScript】for循环

文章目录for循环案例1:两数相加案例2:绘制九九乘法表案例3:水仙花数案例4:绘制菱形案例5:计算表达式结果break和continue图片切换效果案例(轮播图结构)一、JavaScript代码二、HTML结构和CSS样式…

基于java+springmvc+mybatis+vue+mysql的演出道具租赁管理系统

项目介绍 前端页面: 功能:首页、道具出租、公告资讯、个人中心、后台管理 管理员后台页面: 功能:首页、个人中心、用户管理、商家管理、道具类型管理、道具出租管理、租赁订单管理、道具归还管理、我的收藏管理、系统管理 用户…