Exception和继承自Exception的RuntimeException区别

5个必知的脑网络图论指标:从聚类系数到小世界特性(附BCT工具包使用指南) 本文深度解析脑网络图论分析中五个核心指标:聚类系数、特征路径长度、全局效率、局部效率及节点效率,并详解其计算与解读。结合Brain Connectivity Toolbox工具包,提供从实战计算、常见报错解决到小世界特性统计检验的完整指南,帮助研究者跨越理论与实操鸿沟,让连接矩阵数据真正服务于神经科学研究。 阅读详情
Java compiler要求所有的Exception 要么被catch,要么被throw,除非这是一个RuntimeExeption (e instanceof RuntimeException)。也就是说,通常的Exception一定要被处理,也即我们所说的 checked exception,而RuntimeException不强制要求处理,(当然你自己要处理也可以),所以我们称为unchecked exception。 
之所以区分 checked/unchecked exception,JAVA的设计思想是区分从类/方法设计者角度来看两种不同的异常: 
一种是设计者认为这个方法在使用过程中使用者能够处理的异常,这些往往作为checked exception。比如一个IO系统的设计者会认为诸如物理文件不存在或者介质无法读取等异常时很可能发生,而使用者完全可能捕获这个异常,通过让用户重新输入文件名等方式重新进行这个操作,也就是说,这是一个可恢复的操作。所以我会在诸如 read()/write()等操作中throw 一个 IOException(checked exception)。 
第二种是设计者认为使用者不能够处理的异常,比如我写一个函数要求传入的参数是个正数,那么当我发现使用者传了个负数进来时,合理的预期是程序中出bug了。如果我抛出一个异常描述这件事,即使我要求调用者捕获这个异常,他肯定也不知道该怎么办(总不能随便传一个正数进来吧)。这时候我就会抛出一个IllegalArgumentException(uncheck exception),这里面的潜台词是:小子,我知道你也是帮人背黑锅的,处理不了这个,你还是交给你的领导(调用你的程序)去处理这个异常吧。 
同理,当JVM发现除数为0时,抛出的ArithmeticException也是一个unchecked exception。 

从这里可以看出,checked exception和 unchecked exception的根本区别在于设计者认为使用者是否能够并且应该处理这个异常。不幸的是,由于Java使用者水平的参差不齐,大量的unchecked exception该被设计成了checked exception,而对于真正的checked exception,又有太多被catch了之后啥都不作就悄无声息了。尤其是不声不响吞噬exception的行为,不但达不到设计者本来的要求(进行恢复处理),甚至问题更大(连 unchecked exception那种最后报错的效果都没了)。 

所以, C#在异常处理上采用了完全不同的思路,把所有的的exception都设计为 unchecked exception,也就是说,它基于这样一种思路: 我不要求任何人处理任何异常;如果你能处理,那么你就显示catch这种异常;如果某种异常没有人catch,那么系统最终会崩溃。


ps:

RuntimeException 是属于unchecked (java 编译器允许不catch)表示一类 未知的不确定的只有在运行时才会出现的异常。 
而非RuntimeException 是checked (java 编译器必须要求 catch),大概指一类可以预知的,当发生异常后知道如何处理的异常,所以需要捕获。


python中有趣的库 freegames 的详细使用 freegames 是一个包含多个简单 Python 游戏的开源库,适合初学者学习 Python 编程和游戏开发。以下是 freegames 的详细介绍和用法示例。 阅读详情

相关推荐

gsplat在windows本地部署

3DGS的cuda提效和优化内存的版本gsplat,使得在有一定GPU计算能力的电脑上也能够尝尝3DGS的效果。我在2025年的开年之初尝试配置过gsplat,由于过程中遇到很多问题,最终还是有一些windows上字符编码的问题,没有跑通,最近看gsplat的github更新了3DGUT,优化了反射和二次折射,以及适用于非线性相机模型,如鱼眼相机等。在data目录下下载好了360_v2的数据,进入之后images文件夹是原始分辨率的图像,images_2是下采样系数为2的数据,以此类推。

yuleaf_csdn的博客 2370

【Java异常体系】(三)异常体系之RuntimeException解析...

RuntimeException通常指示程序在运行时出现了错误,需要立即停止程序的执行,通常是由程序员编写的代码错误引起的,如除以零、数组越界、空指针等。 在Java中,RuntimeException并不需要显式地捕获和处理,但是良好的编程习惯应该尽可能地避免抛出RuntimeException,以确保程序健壮性和可维护性~

Technology changes the world of life 1万+

保姆级教程:在爱快iKuai虚拟机里装OpenWrt旁路由,实现去广告和特殊功能

本文提供在爱快iKuai虚拟机中安装OpenWrt旁路由的详细教程,帮助用户实现去广告和特殊功能扩展。通过分步指导,包括虚拟机配置、网络设置和功能优化,打造稳定高效的家庭网络环境,特别适合软路由爱好者和网络管理员。

weixin_31364787的博客 824

RuntimeException详解

在Java中,异常是指在程序执行过程中出现的不正常情况,可能会导致程序终止或产生意外的结果。是Exception类的一个子类,它代表了一类特殊的异常,通常被称为“非受检异常”或“运行时异常”。与其他异常不同,异常及其子类在代码中并不需要显式地捕获或声明处理。这是因为它们通常表示由程序逻辑错误引起的异常情况,即在代码编写过程中产生的错误。因此,Java编译器允许我们在处理这些异常时更加灵活,而不需要强制性地进行异常处理。常见的:当试图访问一个空对象的成员时抛出。:当传递给方法的参数不合法时抛出。

weixin_62079735的博客 4128

Fleury算法寻找欧拉回路(mtlab代码详解)

【代码】Fleury算法寻找欧拉回路(mtlab代码详解)

m0_63449998的博客 1296

手把手拆解UCIe协议层:从Raw Mode到Flit Mode,数据包到底经历了什么?

本文深入解析UCIe协议层的数据包处理机制,从Raw Mode到Flit Mode的三大变体(Standard 256B、68B-Enhanced、Latency-Optimized),详细揭示数据包在不同模式下的封装与转换过程。通过工程师视角,展示协议层如何实现多模式动态切换、错误恢复及与D2D Adapter的协同设计,为芯片级互连技术提供实践指导。

weixin_28728495的博客 239

RuntimeException

一. 理解: runtime exception,也称运行时异常,我们可以不处理。出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点...

weixin_39999734的博客 2万+

LeRobot X-VLA:首个适用于任意机器人、任意任务的软提示机器人基础模型

X-VLA是一种基于软提示的视觉-语言-动作模型,通过可学习嵌入向量编码不同机器人配置,实现跨平台统一控制。该框架采用两阶段训练:先在29万次多平台任务中学习通用策略,再通过微调少量参数(仅1%)适配新机器人。实验表明,0.9B参数的X-VLA在6个仿真和3个真实平台上表现优异,如LIBERO任务达93%成功率,布料折叠任务100%完成。其核心创新是将硬件差异视为"任务",用软提示引导Transformer处理异构数据,为机器人基础模型提供可扩展方案。

2506_90492529的博客 1241

Exception 和 RuntimeException

Exception和继承自Exception的RuntimeException有什么区别呢? Java compiler要求所有的Exception 要么被catch,要么被throw,除非这是一个RuntimeExeption (e instanceof RuntimeException)。也就是说,通常的Exception一定要被处理,也即我们所说的 checked exception,而...

330

大模型_WIN10使用hyper-v安装Ubuntu24.04虚拟机_配置独立静态IP地址_连接外网_并与内网其他机器互通_通过容器安装Dify_超详细安装过程002--人工智能工作笔记0247

本文详细描述了在Hyper-V环境中配置网络、安装Ubuntu虚拟机、设置IP地址、安装Docker以及部署Dify应用的过程。首先,通过Hyper-V管理器创建外部虚拟交换机(ExternalSwitch),并配置本机、虚拟交换机和Ubuntu虚拟机的IP地址,确保网络互通。接着,在Ubuntu虚拟机中安装Open-VM-Tools和Docker,并配置Docker的国内镜像源。最后,通过Git克隆Dify源码,使用Docker Compose启动Dify应用,完成部署。整个过程涵盖了网络配置、虚拟机管理

添柴程序猿的专栏 1751

OpenStack 2018 年终盘点

目录 文章目录目录前言OpenStack 一年来的成长NovaCinderNeutronIronicCyborgOctaviaKollaMagnumZunKuryr从 OpenStack 到 OpenInfra 前言 这是最好的时代,也是最坏的时代 — — 查尔斯·约翰·赫芬姆·狄更斯《双城记》 年关将至,闲暇之余,回顾我与 OpenStack 的 2018。 NOTE:仅作为个人见解,与公...

烟云的计算 3596

RuntimeException和Exception区别

1.java将所有的错误封装为一个对象,其根本父类为Throwable, Throwable有两个子类:Error和Exception。 2.Error是Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它。在执行该方...

lixpjita39的专栏 5万+

YOLOv11 环境配置全流程 | 从零开始搭建训练与推理环境

YOLOv11环境配置与训练全流程指南 本文详细介绍了YOLOv11目标检测模型的环境配置、训练与推理全流程。内容包括: 环境要求:列出GPU、CUDA、Python等组件的版本要求,提供快速检查脚本 Windows配置: CUDA 12.6和cuDNN 8.9.7安装步骤 使用Conda创建隔离环境 PyTorch GPU版本安装方法 IDE环境配置 Linux配置:提供Ubuntu 22.04下的CUDA、cuDNN安装命令和Conda环境搭建 Docker方案:提供一键式容器化部署命令 训练实战: 数

shrgegrb的博客 2015

Java异常 : 继承Exception和继承RuntimeException有什么区别

继承Exception和继承RuntimeException有什么区别 继承Exception和继承RuntimeException有什么不同效果? 创建两个异常类 package anomyous; public class TooSmallException extends RuntimeException{ public TooSmallException(String message,int num) { super(message); System.err

weixin_44151448的博客 1831

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Exception和继承自Exception的RuntimeException有什么区别呢

Java compiler要求所有的Exception 要么被catch,要么被throw,除非这是一个RuntimeExeption (e instanceof RuntimeException)。也就是说,通常的Exception一定要被处理,也即我们所说的 checked exception,而RuntimeException不强制要求处理,(当然你自己要处理也可以),所以我们称为unche

jvortex的专栏 1582

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Exception和继承自Exception的RuntimeException有什么区别

Java compiler要求所有的Exception 要么被catch,要么被throw,除非这是一个RuntimeExeption (e instanceof RuntimeException)。也就是说,通常的Exception一定要被处理,也即我们所说的 checked exception,而RuntimeException不强制要求处理,(当然你自己要处理也可以),所以我们称为unchec

finishne的博客 2416

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

异常继承RuntimeException与Exception区别

1.Exception是必须在模块上线之前解决的异常问题,通常用try catch来解决。2.RuntimeException是模块上线后,运行时会出现的异常(提前考虑)

qq_45684671的博客 191

附加:自定义异常,继承Exception和RuntimeException的区别;(本篇是转载博客,慎看)

说明: (1)为什么写这篇博客?:在【Spring Boot电商项目23:商品分类模块二:【增加目录分类】接口;】中;出于【我们在方法内部throw抛出ImoocMallException异常时,,,,不用再,在,方法后面throws这个异常】的目的,让ImoocMallException异常改继承了RuntimeException;这样以后,【当我们在方法内部throw抛出ImoocMallException异常时,,其就会自动帮我们把这个异常,给throws抛上去】; 而,自己对这个点,是有..

小枯林的博客 1970

编译时异常(Exception)和运行时异常(RuntimeException)

本文系统讲解了Java中编译时异常与运行时异常的核心区别。编译时异常(受检异常)需要强制处理,通常由外部环境问题引发,直接继承Exception;运行时异常(非受检异常)无需强制处理,多由编程错误导致,继承RuntimeException。Exception作为异常总父类,包含两大分支:直接子类(编译时异常)和RuntimeException分支(运行时异常)。关键点在于:Exception本身被认定为编译时异常,因为它不继承RuntimeException,遵循"受检异常"的默认规则。

weixin_45784564的博客 986

Error、Exception和RuntimeException的区别

    Error表示非常严重的、不可预期的异常情况,通常应用程序无需捕获并处理。    Exception通常是一种设计或实现的异常,它是编译器可以“感知”的异常,所以程序被要求必须捕获并处理这些异常。    RuntimeException与Error一样,也是无需捕获的,且就算在方法上throws了RuntimeException,调用该方法的语句也无需catch这些异常。     Er

1984

为什么要继承 RuntimeException 而不是 Exception

通过继承类及其子类,你的自定义异常类将成为非受检异常,可以在不强制要求方法声明中抛出的情况下使用,提高了代码的灵活性和简洁性。这种设计使得异常处理在逻辑错误和运行时异常情况下更加方便和符合 Java 异常处理的最佳实践。

m0_73180708的博客 599

关于自定义异常在接口开发中继承RuntimeException的使用总结

关于自定义异常在接口开发中继承RuntimeException的使用总结     在接口开发的过程中,为了程序的健壮性,我们经常考虑到代码执行的异常,并给前端一个友好的展示,这里就用到自定义异常,继承RuntimeException类。这个RuntimeException和普通的Exception有什么区别呢? (1)Exception:非运行时异常,在项目运行之前必须处理掉。一般由程序员 try…catch掉。 (2)RuntimeException:运行时异常,在项目运行之后出错则直接终止运行,异常由J

骑着蜗牛行天下 2962

Java 基础学习之异常 三 (Exception 类与 RuntimeException 类)

1 Exception 类与 RuntimeException 类 继承关系 ExceptionRuntimeExceptionIllegalArgumentExceptionNumberException    由图可知,RuntimeException 是 Exception 的子类。 Exception 在程序中必须使用 try…catch 进行处理。 RuntimeException ...

IT小白的博客 501

自定义异常类是继承Execption异常还是继承RuntimeExecption异常?

1.继承Execption异常还是继承RuntimeExecption的区别 想分辨这两种的区别,首先要介绍可检查异常和不可检查异常,何为可检查何不不可检查?可以参考博客Throwable、Exception、Error分析 可检查的异常(checked Execption):可检查异常必须在代码中显式的捕获,这是编译期工作的一部分,不然无法通过编译。 不可检查异常:不可检查即意味着编译期检测不...

kevin的博客 5360

Java基础回顾 : RuntimeException和Exception的区别

Exception和RuntimeException的区别: ├ . Exception是RuntimeException的父类 ├ . Exception定义的其他子类(异常)都要求进行强制的处理,而RuntimeException可以由用户选择性的进行处理. 几个常见的RuntimeException : NullPointerException 、 ClassCastE

【小喵】的博客 717

Java自定义异常,应该继承Exception还是Runtime Exception,为什么?

回答1: 继承Exception还是继承RuntimeException是由异常本身的特点决定的,而不是由是否是自定义的异常决定的。 例如我要写一个java api,这个api中会调用一个极其操蛋的远端服务,这个远端服务经常超时和不可用。所以我决定以抛出自定义异常的形式向所有调用这个api的开发人员周知这一操蛋的现实,让他们在调用这个api时务必考虑到远端服务不可用时应该执行的补偿逻辑(比如尝试调用另一个api)。此时自定义的异常类就应继承Exception,这样其他开发人员在调用这个api时就会收到编

AlbenXie的博客 5167
上一篇: eclipse的黑科技之 代码段抽成新方法
下一篇: spring基于@ExceptionHandler的异常处理
琅琊山二当家
博客等级 码龄18年 447粉丝 322原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值