今日总结10.18

news/2024/10/20 1:23:59/

Exception 和Error 有什么区别

Exception和Error都是Java等编程语言中异常处理机制的重要组成部分,它们都继承自Throwable类。以下是两者的主要区别:

定义与性质

Error
1.表示严重的系统级错误,如内存溢出(OutOfMemoryError)、栈溢出(StackOverflowError)等。
2.这类错误通常由JVM(Java虚拟机)抛出,程序无法捕获或恢复。
3.Error是程序运行中不可预料的异常情况,发生后会导致JVM处于不可处理或不可恢复的状态。

Exception:
1.表示程序运行过程中的可预料或可处理的异常情况。
2.可以通过代码进行处理,如使用try-catch语句捕获异常并进行相应的处理。
3.Exception分为检查性异常(Checked Exception)和非检查性异常(Unchecked Exception,也称作运行时异常)。

处理方式

Error
1.由于Error通常表示严重的系统级问题,程序员通常不需要也不应该尝试处理这类错误。
2.当Error发生时,程序往往无法继续执行,需要进行相应的系统级处理或重启程序。

Exception:
1.对于检查性异常,程序员必须在编写代码时使用try-catch语句捕获,或者在方法签名中使用throws关键字声明。
2.对于非检查性异常,程序员可以选择捕获处理,也可以选择不捕获(但需要注意可能的程序崩溃风险)。
3.在捕获异常后,程序员可以进行相应的错误处理,如记录日志、清理资源、提示用户等。

应用场景

Error
1.主要应用于描述程序运行过程中遇到的严重系统级问题,如资源耗尽、系统崩溃等。
2.由于这些问题通常无法由程序自身解决,因此Error更多地被用于记录和分析程序崩溃的原因。

Exception
1.广泛应用于程序开发中的异常处理。
2.程序员可以通过捕获和处理异常来确保程序的健壮性和可靠性。
3.异常处理机制还允许程序员在方法签名中声明可能抛出的异常,从而提供额外的信息给方法的调用者。

Checked Exception 和Unchecked Exception 有什么区别

定义与继承关系

Checked Exception

1.继承自java.lang.Exception类,但不包括RuntimeException及其子类。
2.编译器强制要求程序员显式处理这些异常,即在可能出现受检查异常的方法签名中必须使用throws关键字声明该方法可能抛出的异常类型。

Unchecked Exception

1.继承自java.lang.RuntimeException类,或者直接继承自Error类。
2.编译器不强制程序员在方法签名中声明这类异常,即无需使用throws关键字。

处理要求

Checked Exception

1.程序员必须在编写代码时使用try-catch语句捕获受检查异常,或者在方法签名中使用throws关键字声明可能抛出的异常。
2.如果调用的方法可能会抛出受检查异常,那么调用者必须处理这个异常,否则编译器会报错。

Unchecked Exception

1.编译器不要求程序员强制处理非受检查异常。
2.如果非受检查异常没有被捕获,程序会终止执行(除非在全局默认的异常处理器中进行了特殊处理)。
3.非受检查异常通常用于指示编程错误或逻辑错误,如空指针异常(NullPointerException)、数组越界异常(ArrayIndexOutOfBoundsException)等。

http://www.ppmy.cn/news/1540384.html

相关文章

01_MVCC(多版本并发机制)

MVCC(多版本并发机制) 文章目录 MVCC(多版本并发机制)简介工作原理主要组件 事务隔离级别与 MVCC实现方式快照读(Snapshot Read)当前读(Current Read)版本链管理 MVCC 的优缺点优点缺…

利用 Llama 3.1模型 + Dify开源LLM应用开发平台,在你的Windows环境中搭建一套AI工作流

文章目录 1. 什么是Ollama?2. 什么是Dify?3. 下载Ollama4. 安装Ollama5. Ollama Model library模型库6. 本地部署Llama 3.1模型7. 安装Docker Desktop8. 使用Docker-Compose部署Dify9. 注册Dify账号10. 集成本地部署的 Llama 3.1模型11. 集成智谱AI大模型…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-13

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-13 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-13目录1. The Cognitive Capabilities of Generative AI: A Comparative Analysis with Human Benchmarks2. WALL-E: World Alig…

Open-WebUI

Open-WebUI特点⭐ ️直观的界面:聊天界面从 ChatGPT 中汲取灵感,确保用户友好的体验。响应式设计:在桌面和移动设备上享受无缝体验。⚡快速响应:享受快速响应的性能。轻松设置:使用 Docker 或 Kubernetes(…

ToB项目身份认证AD集成(完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法介绍

在前面的两篇文章中,我详细的介绍了使用ldap与window AD服务集成,实现ToB项目中的身份认证集成方案,包括技术方案介绍、环境配置: ToB项目身份认证AD集成(一):基于目录的用户管理、LDAP和Active Directory简述 ToB项目身份认证AD集成(二):一分钟搞定window server 20…

理解C#中空值条件运算符及空值检查简化

前言 .NET 4.6 及以上版本,提供了空值条件运算符 ?. 和 ?[]。这些运算符的引入,为我们提供了一种简明的方式来处理空值的场景、简化空值检查,可避免 NullReferenceExceptions 的异常。本文将探索 C# 的空值检查运算符。 介绍 空值,这里指的是 null。在定义对象后,未对其…

深入了解Vue Router:基本用法、重定向、动态路由与路由守卫的性能优化

文章目录 1. 引言2. Vue Router的基本用法2.1 基本配置 3. 重定向和命名路由的使用3.1 重定向3.2 命名路由 4. 在Vue Router中如何处理动态路由4.1 动态路由的概念4.2 如何处理动态路由4.3 动态路由的懒加载 5. 路由守卫的实现与性能影响5.1 什么是路由守卫?5.2 路由…

2024入门测参考答案(c语言版)

先自己看代码思考,不理解的地方可以截图私聊…… 7-1 祝福祖国! 这是一个编程题模板。 2024年即将到来,作为一名大学生,为了表达在新的一年里,对祖国的祝福,请编写程序输出祝福语:在新的一年…