分享两个概念:非受检异常和受检异常

分享两个概念:非受检异常和受检异常

愿你的每一天都充满阳光和笑声,愿每一步都是轻松与愉快。在新的旅程中,愿你找到勇气攀登高峰,找到智慧化解困境。

愿你的心中充满温暖和善意,愿你的梦想如彩虹般美丽且真实。愿你发现生活中的小确幸,懂得感恩每一个瞬间。

在这里插入图片描述

非受检异常

"非受检异常"通常指的是在编程中发生的一些异常情况,这些异常情况通常不会在代码中明确声明或捕获,因此被称为“非受检异常”或“运行时异常”。

在Java中,非受检异常通常是RuntimeException及其子类的实例。与受检异常(checked exception)不同,非受检异常不需要在方法签名中显式声明,也不需要使用try-catch块来捕获或处理。这使得开发者可以更灵活地处理异常情况,但也需要更加小心,因为这些异常往往反映了程序中的逻辑错误或运行时环境的问题。

以下是一些常见的非受检异常的例子:

  1. NullPointerException(空指针异常): 当试图在一个空对象上调用方法或访问属性时,会抛出NullPointerException。

    String str = null;
    int length = str.length();  // 这里会抛出NullPointerException
    
  2. ArrayIndexOutOfBoundsException(数组越界异常): 当尝试访问数组中不存在的索引时,会抛出ArrayIndexOutOfBoundsException。

    int[] array = {1, 2, 3};
    int value = array[5];  // 这里会抛出ArrayIndexOutOfBoundsException
    
  3. ArithmeticException(算术异常): 当进行不合法的算术运算时,会抛出ArithmeticException。

    int result = 10 / 0;  // 这里会抛出ArithmeticException
    

对于非受检异常,通常的建议是在程序中尽量避免引发这些异常,因为它们通常表示代码中存在问题。此外,如果确实发生了非受检异常,最好的处理方式是让程序崩溃并尽快修复代码,而不是试图捕获并继续执行可能处于不确定状态的程序。

受检异常

与非受检异常相对的概念是受检异常(Checked Exception)。受检异常是在Java中的异常体系中的一类异常,它们是Exception的直接子类,但不是RuntimeException的子类。与非受检异常不同,受检异常在代码中必须进行明确的声明或捕获,否则编译器会报错。

受检异常通常表示一些在程序中可能会发生的、需要程序员注意和处理的异常情况,例如文件不存在、网络连接失败等。这种异常的出现不一定是代码错误,但程序员需要通过try-catch块或者在方法签名中使用throws关键字明确地处理这些异常。

以下是一些受检异常的例子:

  1. IOException(输入输出异常): 表示在输入输出操作中可能发生的异常情况,比如文件读写时可能发生的错误。

    try {FileReader fileReader = new FileReader("example.txt");// 读取文件内容
    } catch (IOException e) {e.printStackTrace();
    }
    
  2. SQLException(SQL数据库访问异常): 表示在与数据库交互时可能发生的异常,比如执行SQL查询时出现问题。

    try {// 执行数据库查询
    } catch (SQLException e) {e.printStackTrace();
    }
    
  3. ClassNotFoundException(类未找到异常): 表示在运行时无法找到所需的类。

    try {Class<?> clazz = Class.forName("com.example.MyClass");
    } catch (ClassNotFoundException e) {e.printStackTrace();
    }
    

总结

非受检异常(Unchecked Exception)和受检异常(Checked Exception)是 Java 编程语言中异常的两个主要类别。它们在处理和捕获方式上有一些重要的区别。

非受检异常(Unchecked Exception):

  1. 继承关系: 非受检异常是 RuntimeException 类及其子类的实例。
  2. 编译时检查: 不需要在方法签名中显式声明或捕获,编译器不会强制要求进行异常处理。
  3. 触发条件: 通常表示程序中的逻辑错误或运行时环境的问题,例如空指针异常(NullPointerException)或数组越界异常(ArrayIndexOutOfBoundsException)。
  4. 不强制处理: 程序员通常不需要捕获或声明处理非受检异常,而是更倾向于修复代码中的问题。

受检异常(Checked Exception):

  1. 继承关系: 受检异常是 Exception 类及其子类中除了 RuntimeException 及其子类的实例。
  2. 编译时检查: 必须在方法签名中显式声明,或者使用 try-catch 块来捕获,否则编译器会报错。
  3. 触发条件: 通常表示程序可能会在运行时遇到的一些合理的、可预测的异常情况,例如文件不存在(FileNotFoundException)或数据库连接失败(SQLException)。
  4. 强制处理: 程序员必须在代码中进行明确的异常处理,以确保程序在面临异常时有合适的应对方式,提高程序的稳定性和可靠性。

非受检异常通常反映了程序中的错误,而受检异常则通常表示程序可能在正常运行中遇到的一些可预测的异常情况。在处理异常时,程序员需要根据具体情况选择适当的方式来处理异常,保证程序的健壮性。

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

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

相关文章

TCN 时序卷积网络 (temporal convolutional network)【因果卷积、空洞卷积】

文章目录 TCN 时序卷积 &#xff08;temporal convolutional network&#xff09;1.因果卷积2.膨胀卷积 TCN 时序卷积 &#xff08;temporal convolutional network&#xff09; 它由膨胀卷积核因果卷积两种卷积构成。 如图&#xff1a;左边是膨胀因果卷积&#xff0c;右边是…

206. 反转链表(Java)

题目描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 输入&#xff1a; head [1,2,3,4,5] 输出&#xff1a; [5,4,3,2,1] 代码实现&#xff1a; 1.根据题意创建一个结点类&#xff1a; public class ListNode {int val…

048.Python包和模块_发布包和模块

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

ARM工控机Node-red使用教程

嵌入式ARM工控机Node-red安装教程 从前车马很慢书信很远&#xff0c;而现在人们不停探索“科技改变生活”。 智能终端的出现改变了我们的生活方式&#xff0c;钡铼技术嵌入式工控机协助您灵活布建能源管理、大楼自动化、工业自动化、电动车充电站等各种多元性IoT应用&#xff…

Unity组件开发--UI管理器

1.Canvas组件&#xff1a; 注意属性&#xff1a; &#xff08;1&#xff09;渲染模式是&#xff1a;屏幕空间相机 &#xff08;2&#xff09;创建一个UICamera节点&#xff0c;管理相机 &#xff08;3&#xff09;屏幕画布缩放模式 &#xff08;4&#xff09;画布下挂载两…

前端项目构建打包生成Git信息文件

系列文章目录 TypeScript 从入门到进阶专栏 文章目录 系列文章目录前言一、前端项目构建打包生成Git信息文件作用二、步骤1.引入相关的npm包1.1. **fs** 包1.2. **child_process** 包1.3. **os** 包 (非必须 如果你想生成的文件信息中包含当前电脑信息则可用)1.4. **path** 包…

基于宝塔搭建Discuz!论坛

一、安装宝塔 我是在我的虚拟机上安装图的宝塔 虚拟机版本&#xff1a;Ubuntu 18.04 wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh 6dca892c安装完成之后在浏览器输入你的地址 https://你的域名&#xff08;或…

每天刷两道题——第十一天

1.1滑动窗口最大值 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值 。 输入&#xff1a;nums [1,3,-1,-3,5,3,6,7], k 3 输出&…

面试题-DAG 有向无环图

有向无环图用于解决前后依赖问题&#xff0c;在Apollo中用于各个组件的依赖管理。 在算法面试中&#xff0c;有很多相关题目 比如排课问题&#xff0c;有先修课比如启动问题&#xff0c;需要先启动1&#xff0c;才能启动2 概念 顶点&#xff1a; 图中的一个点&#xff0c;比…

k8s 之7大CNI 网络插件

一、介绍 网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求&#xff0c;但在实现方面也具有一定的灵活性。因此&#xff0c;业界已有不少不同的网络方案&#xff0c;来满足特定的环境和要求。 CNI意为容器网络…

C# Entity Framework 中不同的数据的加载方式

延迟加载 延迟加载是指在访问导航属性时&#xff0c;Entity Framework 会自动查询数据库并加载相关数据。这种方式在我们需要访问导航属性时比较方便&#xff0c;因为我们无需手动加载相关数据&#xff0c;而且只会在需要时才会进行查询&#xff0c;从而减少了不必要的开销。但…

模仿Activiti工作流自动建表机制,实现Springboot项目启动后自动创建多表关联的数据库与表的方案

文/朱季谦 熬夜写完&#xff0c;尚有不足&#xff0c;但仍在努力学习与总结中&#xff0c;而您的点赞与关注&#xff0c;是对我最大的鼓励&#xff01; 在一些本地化项目开发当中&#xff0c;存在这样一种需求&#xff0c;即开发完成的项目&#xff0c;在第一次部署启动时&…

C++笔记之cout高亮输出以及纯C++实现一个彩色时钟

C笔记之cout高亮输出以及纯C实现一个彩色时钟 code review! 文章目录 C笔记之cout高亮输出以及纯C实现一个彩色时钟一.cout高亮输出1.1.运行1.2.代码一1.3.代码二1.4.重置终端的文本格式到默认设置说明 二.纯C实现一个彩色时钟2.1.运行2.2.main.cc2.3.cout带颜色打印输出技巧…

springCould中的Bus-从小白开始【11】

目录 &#x1f9c2;1.Bus是什么❤️❤️❤️ &#x1f32d;2.什么是总线❤️❤️❤️ &#x1f953;3.rabbitmq❤️❤️❤️ &#x1f95e;4.新建模块3366❤️❤️❤️ &#x1f373;5.设计思想 ❤️❤️❤️ &#x1f37f;6.添加消息总线的支持❤️❤️❤️ &#x1f9…

图解Kubernetes的服务(Service)

pod 准备&#xff1a; 不要直接使用和管理Pods&#xff1a; 当使用ReplicaSet水平扩展scale时&#xff0c;Pods可能被terminated当使用Deployment时&#xff0c;去更新Docker Image Version&#xff0c;旧Pods会被terminated&#xff0c;然后创建新Pods 0 啥是服务&#xf…

OCS2 入门教程(四)- 机器人示例

系列文章目录 前言 OCS2 包含多个机器人示例。我们在此简要讨论每个示例的主要特点。 System State Dim. Input Dim. Constrained Caching Double Integrator 2 1 No No Cartpole 4 1 Yes No Ballbot 10 3 No No Quadrotor 12 4 No No Mobile Manipul…

【java爬虫】首页显示沪深300指数走势图以及前后端整合部署方法

添加首页 本文我们将在首页添加沪深300指数成立以来的整体走势数据展示&#xff0c;最后的效果是这样的 单独贴一张沪深300整体走势图 我感觉从总体上来看指数还是比较稳的&#xff0c;没有特别大的波动&#xff0c;当然&#xff0c;这只是相对而言哈哈。 首先是前端页面 &l…

【python】内存管理和数据类型问题

一、内存管理 Python有一个自动内存管理机制&#xff0c;但它并不总是按照期望的方式工作。例如&#xff0c;如果创建了一个大的列表或字典&#xff0c;并且没有删除它&#xff0c;那么这个对象就会一直占用内存&#xff0c;直到Python的垃圾回收器决定清理它。为了避免这种情…

Android开发基础(一)

Android开发基础&#xff08;一&#xff09; 本篇主要是从Android系统架构理解Android开发。 Android系统架构 Android系统的架构采用了分层的架构&#xff0c;共分为五层&#xff0c;从高到低分别是Android应用层&#xff08;System Apps&#xff09;、Android应用框架层&a…

二线厂商-线上测评-大数据开发

曾经投递过一些中级岗位&#xff0c;在面试之前&#xff0c;会通过邮件的方式把性格测试的题目发给你让你做一下。 一般分为单选题&#xff0c;多选题&#xff0c;性格测试题&#xff0c;认知理解题等等。 大概做了一个小时吧。 单选题&#xff1a; 感觉就是类似于以前高中时候…