Java-Exception与RuntimeException

news2024/10/26 21:32:23

💖简介

📖Exception

Exception 类是所有非致命性异常的基类。这些异常通常是由于编程逻辑问题或外部因素(如文件不存在、网络连接失败等)导致的,可以通过适当的编程手段来恢复或处理。Exception 可以进一步分为两大类:

  1. Checked Exceptions(受检异常): 这些异常必须在代码中显式地声明或捕获。它们通常表示可以预见的问题,比如 IOExceptionSQLException。如果一个方法抛出这样的异常,那么调用该方法的方法要么捕获这个异常,要么也声明抛出这个异常(try catchthrow)。
  2. Unchecked Exceptions(非受检异常): 也称为 RuntimeException。这类异常不需要在方法签名中声明,也不需要强制捕获。它们通常表示编程错误,比如数组越界访问(ArrayIndexOutOfBoundsException)、空指针异常(NullPointerException)等。

📖RuntimeException

RuntimeExceptionException 的子类,用于表示那些在正常情况下不应该发生的错误。

常见的 RuntimeException 子类包括:

  • NullPointerException
  • ArrayIndexOutOfBoundsException
  • IllegalArgumentException
  • ClassCastException
  • ArithmeticException

🌟自定义异常选择

在自定义异常时根据所需进行extends

📖继承 Exception(受检异常)

  • 预期且可恢复:如果你认为这个异常是程序正常流程中可以预见的情况,并且调用者可以通过某种方式恢复或应对这种情况。
  • 强制处理:因为受检异常必须被方法签名声明或者被捕获,这可以确保调用者不会忽略这种异常。这对于那些可能导致严重问题但又不是编程错误的情况非常有用。
  • 外部因素:如果异常通常是由于外部环境或输入数据引起的(如文件不存在、网络连接失败等),通常应该使用受检异常。

📖继承 RuntimeException(非受检异常)

  • 编程错误:如果异常表示的是一个不应该发生的编程错误,比如非法参数传递、空指针访问等。
  • 不强制处理:非受检异常不需要在方法签名中声明,也不需要强制捕获。这意味着你可以更灵活地编写代码,而不需要在每个可能抛出异常的地方都进行显式的异常处理。
  • 内部逻辑错误:如果异常是由于内部逻辑错误导致的,而且这种错误应该通过修改代码来解决,而不是通过捕获和处理异常,那么应该使用非受检异常。

⭐总结

  • 如果异常代表的是程序运行中的合理情况,并且希望调用者必须处理这种情况,那么选择继承 Exception
  • 如果异常是由编程错误引起,并且不希望强制调用者处理它,那么选择继承 RuntimeException

⚡自定义异常及统一异常处理

SpringBoot统一异常处理


结束

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

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

相关文章

分享一些常用的数据库性能监测工具

以下是一些常用的数据库性能监测工具: 一、MySQL MySQL Enterprise Monitor: 由 MySQL 官方推出,提供全面的数据库性能监控、诊断和优化功能。可以监控数据库的各种指标,如查询性能、连接数、缓存命中率等,并提供警报…

目标检测——YOLO11算法解读

作者:Ultralytics公司 代码:https://github.com/ultralytics/ultralytics YOLO系列算法解读: YOLOv1通俗易懂版解读、SSD算法解读、YOLOv2算法解读、YOLOv3算法解读、YOLOv4算法解读、YOLOv5算法解读、YOLOR算法解读、YOLOX算法解读、YOLOv6算…

(南京观海微电子)——HKC_5.0_QP050AS01-1_MIPI_LVDS_RGB原理及代码介绍

1. MIPI 2. LVDS 3. TTL 4.代码 //初始化代码 Generic_Short_Write_1P(0xee,0x01); // ENTER PAGE1 Generic_Short_Write_1P(0xea,0x07); Generic_Short_Write_1P(0xeb,0x12); Generic_Short_Write_1P(0x0a,0x76); // vcom //Generic_Sh…

兆易创新Cortex-M7 GD32H459适配OpenHarmony轻量系统适配教程

笔者利用国庆假期的时间适配了一款Cortex-M7 的国产厂商兆易创新GD32H459,开源地址:https://gitee.com/GD32H759_OpenHarmony OpenHarmony 4.1r 轻量系统移植到GD32H759文档 1.学习本文档的意义 1.学习如何移植OpenHarmony轻量系统4.1r到GD32 m7内核G…

[论文期刊|稳定检索]2024年信号处理与光学工程国际会议(SPOE 2024 )

2024年信号处理与光学工程国际会议 2024 International Conference on Signal Processing and Optical Engineering 【1】大会信息 会议名称:2024年信号处理与光学工程国际会议 会议简称:SPOE 2024 大会时间:请查看官网 大会地点&#xf…

【JS试题】对象键排序问题的神仙试题

前言 题目如下: const obj { a: 0 } obj[1] 0 obj[obj.a] obj.a const values Object.values(obj) obj[values[1]] obj.a console.log(obj);在此之前需要先了解 JS 对象键的排序问题,JS会对对象的属性进行处理,把所有 Number类型 和 数…

AWS S3迁移到阿里云OSS实践

本教程讲解如何将AWS S3中的数据迁移到阿里云对象存储OSS。 如果您需要将AWS S3中的数据通过专线迁移到阿里云对象存储OSS,请参见使用代理迁移。 概述 阿里云在线迁移服务是阿里云提供的存储产品数据通道。使用在线迁移服务,您可以将第三方数据轻松迁…

GaussDB主备版 8 工具学习

1 客户端工具 1.1 gsql 1.1.1 类似plsql 1.1.2 默认只支持从服务器本机连接,如果需要连接到远端的数据库,必须在服务端进行配置 1.1.3 gsql --help 1.1.4 命令参考-https://doc.hcs.huawei.com/db/zh-cn/gaussdb/24.1.30/tg/gaussdb-38-0007.html 1.1.…

Golang | Leetcode Golang题解之第474题一和零

题目: 题解: func findMaxForm(strs []string, m, n int) int {dp : make([][]int, m1)for i : range dp {dp[i] make([]int, n1)}for _, s : range strs {zeros : strings.Count(s, "0")ones : len(s) - zerosfor j : m; j > zeros; j--…

【网络基础知识】网络通信概述与TCPIP、UDP协议

网络基础知识 介绍网络基础知识,譬如网络通信概述、OSI 七层模型、IP 地址、TCP/IP 协议族、TCP 和 UDP 协议等等, 旨在以引导入门、了解为主,其中并不会深入、详细地介绍这些内容; Linux网络编程入门移步:【Linux网络…

使用CSS和HTML实现3D图片环绕效果

使用CSS和HTML实现3D图片环绕效果 在本篇博客中,将介绍如何使用HTML和CSS实现一个3D图片环绕效果。这个效果不仅具有视觉吸引力,而且具有高度的互动性,鼠标悬停时动画会暂停。接下来将一步步讲解这个效果的实现过程。 1. 效果 2. 页面结构与…

Python人脸识别技术进阶篇

在上一篇文章中,我们介绍了如何使用Python进行基本的人脸识别。本文将深入探讨人脸识别技术的高级应用,包括如何优化识别性能、处理复杂环境下的识别挑战以及如何利用深度学习模型来提高识别准确性等话题。 人脸识别的原理回顾 人脸识别流程 人脸识别…

使用 llamafile 以单个文件运行本地大模型

在开发 GenAI 应用时,有一个在本地运行的大模型是非常重要的,可以很方便地进行开发和测试。目前有几个流行的在本地运行大模型的选项,包括 Ollama 和 LM Studio。 这里介绍的是 llamafile。llamafile 是 Mozilla 支持的开源项目。llamafile …

OceanBase + DolphinScheduler,搭建分布式大数据调度平台的实践

本文整理自白鲸开源联合创始人,Apache DolphinScheduler PMC Chair,Apache Foundation Member 代立冬的演讲。主要介绍了DolphinScheduler及其架构、DolphinScheduler与OceanBase 的联合大数据方案。 DolphinScheduler是什么? Apache Dolphi…

第十六章 RabbitMQ延迟消息之延迟插件优化

目录 一、引言 二、优化方案 三、核心代码实现 3.1. 生产者代码 3.2. 消息处理器 3.3. 自定义多延迟消息封装类 3.4. 订单实体类 3.5. 消费者代码 四、运行效果 一、引言 上一章节我们提到,直接使用延迟插件,创建一个延迟指定时间的消息&…

一款零依赖、跨平台的流媒体协议处理工具,支持 RTSP、WebRTC、RTMP 等视频流协议的处理

大家好,今天给大家分享一款功能强大的流媒体协议处理工具go2rtc,支持多种协议和操作系统,具有零依赖、零配置、低延迟等特点。 项目介绍 go2rtc可以从各种来源获取流,包括 RTSP、WebRTC、HomeKit、FFmpeg、RTMP 等,并…

第一个servlet程序

文章目录 在原有工程上建立模块前端配置前后端映射关系添加外部依赖库后端代码启动配置 在原有工程上建立模块 添加web框架 前端 应用结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>第一…

【云原生技术】Docker容器进阶知识

文章目录 namespace概述一、namespace的基本概念二、namespace的主要作用三、namespace的类型四、namespace的操作五、namespace在容器技术中的应用 cgroup一、cgroup的基本概念二、cgroup的主要功能三、cgroup的子系统介绍四、cgroup的应用场景五、cgroup的使用与管理 cgroup和…

uniapp-小程序开发0-1笔记大全

uniapp官网&#xff1a; https://uniapp.dcloud.net.cn/tutorial/syntax-js.html uniapp插件市场&#xff1a; https://ext.dcloud.net.cn/ uviewui类库&#xff1a; https://www.uviewui.com/ 柱状、扇形、仪表盘库&#xff1a; https://www.ucharts.cn/v2/#/ CSS样式&…