8、异常机制---- 8.1 Error和Exception

news2024/11/28 19:30:26

8、异常机制

8.1 Error和Exception

  1. 什么是异常
    • 在实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们的程序正在运行,内存或硬盘可能满了。等等
    • 程序软件在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们称之为异常,英文是Exception,意思是是例外。这些例外的情况称之为异常,异常能让我们写的程序做出合理的处理。而不至于程序崩溃。
    • 异常指程序运行中出现的不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。
    • 异常发生在程序运行期间,它影响了正常的程序执行流程

错误示例:递归调用

package com.baidu.www.exception;

public class Demo01 {
    public static void main(String[] args) {
        new Demo01().a();
    }
    public void a(){
        b();
    }
    public void b(){
        a();
    }
}
/**
 * Exception in thread "main" java.lang.StackOverflowError
 * 	at com.baidu.www.exception.Demo01.a(Demo01.java:8)
 * 	at com.baidu.www.exception.Demo01.b(Demo01.java:11)
 * 	at com.baidu.www.exception.Demo01.a(Demo01.java:8)
 * 	at com.baidu.www.exception.Demo01.b(Demo01.java:11)
 *
 * Process finished with exit code 1
 */

异常示例

package com.baidu.www.exception;

public class Demo01 {
    public static void main(String[] args) {
        System.out.println(11/0);
    }
}
/**
 * Exception in thread "main" java.lang.ArithmeticException: / by zero
 * 	at com.baidu.www.exception.Demo01.main(Demo01.java:5)
 *
 * Process finished with exit code 1
 */
/
  1. 异常简单的分类

    Java异常主要掌握一下三种类型的异常

    1. 检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常(比如用户输入错误,这也是很多公司有测试人员这个职位的原因,专门站在用户的角度来找程序的各种bug),这是程序员无法预见的。例如用户要打开一个不存在的文件时(这个时候程序员无法去处理,因为用户要做什么事情程序员根本不知道),一个异常就发生了,这些异常在编译时不能被简单地忽略。
    2. 运行时异常:(比如递归调用,在我们写程序的时候并没有报错,但是在程序运行时就会报错,这种异常是程序员最容易避免的异常,因为程序是自己编写的,知道程序那里会出现问题)运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
    3. 错误ERROR:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,他们在编译也检查不到的。
  2. 异常体系结构

    异常处理框架:所有的异常都可以用一个异常类表示

    Java把异常作为对象来处理,并定义一个基类java.long.Throwable作为所有异常的超类。

    在java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception。

    从图中我们可以看出所有的错误和异常都是Throwable的子类,Error主要是虚拟机错误和AWT错误(GUI编程即图形界面化编程遇到的错误)

    异常体系结构

    Error与Exception一些简单的区别

    Error

    1. Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
    2. Java虚拟机运行错误(Virtual MachineError),当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。
    3. 还有发生在虚拟机试图执行应用时,如类定义错误(NoClassDefFoundError)、链接错误(LinkageError)。这些错误是不可查的,因为他们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的状况。

    Exception

    1. 在Exception分支中有一个非常重要的子分支(子类)RuntimeException(运行时异常)

      1. ArrayIndexOutOfBoundsException(数组下标越界)
      2. NullPointerException(空指针异常)
      3. ArithmeticException(算术异常)
      4. MissingResourceException(丢失资源)
      5. ClassNotFoundException(找不到类)等异常

      这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理,这些异常百分之百与程序员有关系,一般情况下我们把除了运行时异常之外的异常都成为非运行时异常

    2. 这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

    3. Error和Exception的区别:Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程;Exception通常情况下是可以被程序处理的,并且在程序中尽可能的去处理这些异常。

  3. Java异常处理机制

  4. 处理异常

  5. 自定义异常

  6. 总结

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

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

相关文章

23. 带旋转的数独游戏

题目 Description 数独是一个基于逻辑的组合数字放置拼图,在世界各地都很受欢迎。 在这个问题上,让我们关注 网格的拼图,其中包含 个区域。 目标是用十六进制数字填充整个网格,即 ,以便每列,每行和每个区…

ABB机器人20032转数计数器未更新故障报警处理方法

ABB机器人20032转数计数器未更新故障报警处理方法 ABB的机器人上面安装有电池,需要定期进行更换(正常一年换一次),如果长时间不更换,电量过低,就会出现转数计数器未更新的报警,各轴编码器的位置就会丢失,在更换新电池后,需要更新转数计数器。 具体步骤如下: 先用手动…

泛微OA流程表单中代码块获取URL的参数

获取URL的参数 需要编辑自定义函数 function getUrlParam(key){var url decodeURI(window.location.href);var paramMap {};var paramStr url.split("?")[2];if (paramStr && paramStr ! "") {var paramStrArr paramStr.split("&&qu…

客户忠诚度和保留率:不良方法的陷阱

良好的客户忠诚度和保留策略是任何电子商务业务成功的关键因素。但当出现问题时会发生什么?您可以采取哪些措施来鼓励忠诚度并减少客户流失?继续阅读以了解不良客户忠诚度和保留实践的后果。 忠诚度和保留率低下的后果 客户不满意和高流失率 客户忠诚…

直播软件app开发中的AI应用及前景展望

在当今数字化时代,直播市场蓬勃发展,而直播软件App成为人们获取实时信息和娱乐的重要渠道。随着人工智能(AI)技术的迅猛发展,直播软件App开发正逐渐融入AI的应用,为用户带来更智能、更个性化的直播体验。 …

什么是高压放大器

高压放大器是一种用于放大高电压信号的电子设备。它主要用于需要处理高电压信号的应用,如电力系统、医疗设备、科学研究以及工业和实验室实验等领域。下面将详细介绍高压放大器的原理、特点和应用。 高压放大器的原理基于电子放大技术,通过输入信号放大电…

国腾GM8284DD 将高速串行 LVDS 信号解码为并行 TTL 数据

国腾GM8284DD 1.描述: GM8284C 型 28 位可编程数据选通接收器主要用于视频/图像传输中的接收部分,实现 的功能是将高速串行 LVDS 信号解码为并行 TTL 数据,完成数据的解码功能。该器件可将 4 对串行 LVDS 差分信号在时钟信号作用下…

Java 加了@PreAuthorize注解的接口在Postman中访问

1. 首先,你需要获取一个有效的用户token,该token应包含了相应的接口权限。你可以通过登录或其他身份验证方式来获取token。2. 打开Postman,并确保已选择正确的HTTP方法(GET、POST等)。3. 在请求的Headers部分&#xff…

【TypeScript学习】—面向对象(四)

【TypeScript学习】—面向对象(四) 一、面向对象 二、类 三、构造方法 class Dog{name:string;age:number;//构造函数constructor(name:string,age:number){this.namename;this.ageage;}bark(){//在方法中可以通过this来表示当前调用方法的对象//this表…

数据结构零基础入门篇(C语言实现)

前言:数据结构属于C学习中较难的一部分,对应学习者的要求较高,如基础不扎实,建议着重学习C语言中的指针和结构体,万丈高楼平地起。 一,链表 1)单链表的大致结构实现 用C语言实现链表一般是使…

Mendix如何实现导出文件

刚刚接触Mendix低代码两周,花了一周在b站看初级视频然后考完初级,第二周开始做个列表查询感觉照葫芦画瓢没啥难度。但最近要求写个导出列表数据,在mendix社区翻了翻,这个功能算是常见的。找了mendix官方提供的Docs磕磕盼盼才实现了…

学会这几步,教你1分钟辨出B站优质UP主!

品牌想要投放某UP主,该如何判断UP主是否优质并且同品牌相匹配呢?运用这一套多维度的UP主评估方法 ,帮助你高效判断,快来看看具体怎么操作吧! 一、up主粉丝涨跌 有些广告主在判断UP主是否值得投放时,会陷入…

OLED透明屏 裸屏:透明未来的创新之选

OLED透明屏 裸屏作为一项领先的显示技术,正以其独特的优势和创新的设计特点引起广泛关注。 根据市场调研数据显示,预计到2025年,OLED透明屏 裸屏市场规模将达到250亿美元,年均增长率超过25%。 本文将通过深入探讨OLED透明屏 裸屏…

Vue2基础学习

vue基础学习 Vue基础指令v-show 和 v-ifv-on指令v-bind指令v-bind操作classv-bind 操作stylev-for 指令练习:图书管理案例v-model 指令修饰符v-model指令修饰符click.stop-》阻止冒泡按键修饰符阻止默认行为 计算属性计算属性简写computed计算属性VS方法methods计算…

Java版本+企业电子招投标系统源代码+支持二开+Spring cloud

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…

生成式人工智能促使社会转变

作者:JEFF VESTAL 了解 Elastic 如何处于大型语言模型革命的最前沿 – 通过提供实时信息并将 LLM 集成到数据分析的搜索、可观察性和安全系统中,帮助用户将 LLM 提升到新的高度。 iPhone 社会转变:新时代的黎明 曾几何时,不久前…

别再埋头苦干了,标准化财务数据分析方案开箱即用!

在这个数字化、智能化的时代,一味埋头苦干只会换来效率低下的结果,还是得巧用各种现成资源,以财务数据分析为例,就可以下载奥威BI财务数据分析方案。一键套用,立得覆盖各个主题的财务数据分析报表,快速摸清…

纯前端读写文件?

事情是这样的我发现vscode在线版居然可以打开文件目录和文件,还能保存文件。 兼容性一般 目前 谷歌 edge Opera 支持 其他均不支持 https://vscode.dev/ 查了一下MDN 发现增加新的API 了 https://developer.mozilla.org/zh-CN/docs/Web/API/Window/showDirectoryP…

使用js搭建简易的WebRTC实现视频直播

首先需要一个信令服务器,我们使用nodejs来搭建。两个端:发送端和接收端。我的目录结构如下图:流程 创建一个文件夹 WebRTC-Test。进入文件夹中,新建一个node的文件夹。使用终端并进入node的目录下,使用 npm init 创建p…

易基因:MeRIP-seq等揭示mRNA m6A甲基化调控拟南芥的抗寒性分子机制|植物抗逆

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 植物通过改变数千个基因的mRNA丰度以促进其生理和代谢过程,从而对低温应激进行响应。在转录后水平上,这些冷应激应答转录本经历可变剪接、microRNA介导的调控和可…