认识Java中的异常处理

news/2024/4/27 5:53:54/文章来源:https://blog.csdn.net/m0_71485750/article/details/127523489

文章目录

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

Java异常处理

异常体系的介绍

什么事异常处理?

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

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

为什么要学习异常?

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

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

在这里插入图片描述

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

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

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

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

在这里插入图片描述

简单来说:

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

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

常见运行时异常

运行时异常;

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

常见的运行时异常示例:

数组索引越界异常: ArrayIndexOutOfBoundsException

public static void main(String[] args) {// 数组索引越界异常: ArrayIndexOutOfBoundsExceptionint[] 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.luyixian.cn/news_show_237187.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息安全技术

安全分析模型自动化调优 MLOps(Machine Learning Operations)是一种人工智能 的工程实践,是面向机器学习项目的研发运营管理体系 。旨在实现 ML 管道的操作、ML 模型的部署和管理标准化,支持ML 模型的发布、激活、监控、性能跟踪…

入门:镜像结构介绍

前面我们了解了Docker的相关基本操作,实际上容器的基石就是镜像,有了镜像才能创建对应的容器实例,那么我们就先从镜像的基本结构开始说起,我们来看看镜像到底是个什么样的存在。 我们在打包项目时,实际上往往需要一个基…

【数据结构】堆(二)——堆排序、TOP-K问题

作者:一个喜欢猫咪的的程序员 专栏:《数据结构》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 堆排序:(以小堆为例) Heapsort函数…

JVM类加载/双亲委派模型

类加载是一个复杂的过程, 那么我们平时说的类加载到底是干啥的呢? 一. 类加载是干啥的 我们都知道Java程序在运行之前, 需要进行编译, 由 .java > .class文件(二进制字节码文件) , 而在运行的时候呢, Java进程(JVM), 就会读取对应的 .class文件, 并且解析他的内容, 在内存…

【JY】 ABAQUS子程序UEL的有限元原理与应用

不等待即关注【简述ABAQUS中UEL子程序】ABAQUS作为成熟的商用有限元软件,可为高级用户提供特定的分析需求。ABAQUS常见的二次开发子程序包括:UMAT、VUMAT、UGENS、UEL和VUEL等。其中UEL/VUEL分别适用于ABAQUS的Standard/Explicit求解器。只有清楚有限元分…

C语言重点解剖关键字要点速记

1.在windows中,双击的本质是运行该程序,就是将程序(.exe)加载到内存当中去。任何程序在被运行之前都必须加载到内存当中去。 2.所有的变量本质都是在内存的某个位置开辟的。变量不能定义在硬盘上,因为变量必须在程序运行的时候才能被开辟&am…

软件设计师——项目管理

文章目录Gantt图与Pert图风险管理配置管理沟通管理题目举例Gantt图与Pert图 甘特图能够清晰描述每个任务的开始 / 结束时间及各任务之间的并行性,也可以动态地反映项目的开发进展情况,但难以反映多个任务之间存在的逻辑关系;PERT 利用项目的…

微机原理与接口技术笔记(持续更新)

文章目录前言储存系统与技术材料高速储存器缓冲储存器(Cache)材料,局部性,访问方式Cache全相联映射Cache交换与一致性单核CPU一致性处理多核CPU的MESI协议主储存器(内存)主要技术指标容量带宽内存模组与内存…

【C++进阶】C++11新特性上篇(万字详解)

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…

[附源码]计算机毕业设计Python餐馆点餐管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

244. 谜一样的牛——二分+树状数组

有 n 头奶牛,已知它们的身高为 1∼n 且各不相同,但不知道每头奶牛的具体身高。 现在这 n 头奶牛站成一列,已知第 i 头牛前面有 Ai 头牛比它低,求每头奶牛的身高。 输入格式 第 1 行:输入整数 n。 第 2…n 行&#x…

UOS SDN

​ 文章目录 一.安装相关软件包二.上传并解压opendaylight软件包三.创建拓扑四.下发流表五.启动HTTP-server服务六.截图测试启动 OpenDayLight 的 karaf 程序,并安装如下组件: feature:install odl-restconf feature:install odl-l2switch-switch-ui feature:install odl-…

python制作问题搜索解答器,从此学习无忧

前言 大家早好、午好、晚好吖 ❤ ~ 今天博主给大家带来一个问题搜索解答器!! 需要素材 以及一双慧手和一个灵活的脑子~ 效果展示 代码展示 导入模块 import requests import tkinter as tk from tkinter import ttk import webbrowserdef search(wor…

Python中的魔法方法

python中的魔法方法是一些可以让你对类添加“魔法”的特殊方法,它们经常是两个下划线包围来命名的 Python的魔法方法,也称为dunder(双下划线)方法。大多数的时候,我们将它们用于简单的事情,例如构造函数(init)、字符串表示(str, r…

基于Geehy APM32F4移植使用letter-shell命令行终端

1. letter-shell简介 letter shell是一个C语言编写的,可以嵌入在程序中的嵌入式shell,主要面向嵌入式设备。 说得直白点他就是一个命令行交互软件,可以读取用户输入的命令,找到并执行命令对应的函数。 letter-shell的功能十分强…

XXL-Job分布式任务调度框架-- 集群HA的配置3

一 xxl-job集群概述 1.1 xxl-job集群HA的作用 为了避免单点故障,任务调度系统通常需要通过集群实现系统高可用 由于任务调度系统的特殊性,“调度”和“任务”两个模块需要均支持集群部署,由于职责不同,因此各自集群侧重点也有…

适合零基础人群学习的Python入门教程,快来学习吧

适合零基础人群学习的Python入门教程学什么?小编为大家准备的Python学习教程,课程主要讲解:Python核心编程、Linux基础、前端开发、Web开发、爬虫开发、人工智能等内容。 对于初学者想更轻松的学好Python开发,爬虫技术&#xff0c…

Go环境搭建与IDE开发工具配置

安装Go语言编译器 Go语言编译器》编译器将源代码编译为可执行程序》源代码程序员使用高级语言所书写的代码文件》高级语言c/c/go…》机器语言0和1构成,机器能直接识别》汇编语言比机器语言稍微可读一点点的指令集 编译器下载地址 根据系统下载对应的go编译器版本…

三分查找算法

目录 一 算法简介 详细介绍 两种基本方法 二 算法实践 1)实数三分 拓展:秦九韶算法计算多项式 方法1:直接模拟累加 方法二:根据秦九韶算法 1)模板三分法 题目描述 解法 2)三分求极值 题目描述 …

Python:遗传算法最优路径

Hello,大家好!读研前写过一篇遗传算法的代码,比较简单,算是个入门,当时就有想用它来解决最优路径的问题,上算法导论课时碰巧有听到同学有分享过,但由于自己研究的方向不是这块,就没有…