为什么要设计JAVA异常

news/2024/6/18 21:37:10 标签: java, 异常

从业这么多年,每当谈起异常,都是懵懵懂懂,只是依稀记得它是处理错误的,当程序出错,日志里会有异常日志,可以查看异常定位错误。但是最近突然发现一个问题,那就是处理错误不一定非的要用异常啊,比如说参数合法性检查等等,判断是否为空后直接返回校验信息等,通过程序的各种手段都可以处理,那么为什么要用异常呢?它到底能解决什么问题呢?

我们平时写程序时,很多人都忽略了一个问题,那就是“程序是否正确的执行完了”,而往往只是关心是否执行完了。这样往往会将真正抓住错误的时机错失,得到的是衍生出来的后续错误,并不是此次事故的真正原因。所以我们需要一种对错误的处理机制。

早期没有异常处理机制时。错误的处理模式往往是会返回某个特殊值或设置某个标志,并且假定调用者将对这个返回值或标志进行检查,以判定是否发生了错误。然而随着时间的推移,人们发现,高傲的程序员们更倾向于:“错误也许会发生,但那是别人造成的,不关我的事”。所以不检查的情况就不足为奇了。有这样的一部分函数,往往处理这种检查很无聊,比如:println。如果的确每次调用方法都彻底检查,代码将会变得难以阅读。并且需要定义每种包含错误信息的数据结构作为函数的返回类型。

  • 如果没有异常,那么就必须检查特定错误,并在程序中处理它,这样代码的复用率会降低。
  • 有了异常机制,就可以把“描述在正常执行过程中做什么事”的代码和“出了问题怎么办”的代码分离。

所以设计异常的好处:能够解放判断返回值的方式,提供一种上抛的处理机制,降低代码的判断复杂度,并能保证捕获这个异常,集中处理,增强代码复用率

这里写图片描述


http://www.niftyadmin.cn/n/1756905.html

相关文章

SLF4J处理日志

SLF4J是什么 The Simple Logging Facade for Java,笼统的讲就是slf4j是一系列的日志接口。 The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks, such as java.util.logging, logback and log4…

Maven依赖中的Scope、传递与隔断

Scope的分类 compile 默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。适用于所有阶段,会随着项目一起发布。即依赖的项目会参与到当前项目的编译、运行、测试以及打包发布,…

Spring读取资源文件

Spring配置文件 <bean id"propertyConfigurer" class"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name"locations"><list><value>classpath:/properties/*.properties</v…

Java原子类实现原理分析

原子类来自于java.util.concurrent包&#xff0c;而java.util.concurrent包完全建立在CAS之上的&#xff0c;没有CAS就不会有此包。可见CAS的重要性。 什么是CAS Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种…

服务的注册与发现(Eureka)

服务治理是微服务架构中最为核心和基础的模块&#xff0c;它主要用来实现各个微服务实例的自动化注册和发现。 微服务中用来做注册中心的组件常有zookeeper、eureka、Consul等&#xff0c;这里主要学习Eureka。 Eureka的工作原理 Eureka的组件主要由服务端和客户端组成&…

SpringCloud Eureka Client 源码

这里主要学习一下EurekaClient&#xff0c;通过上一篇学习了解到&#xff0c;Client的功能主要有这么几个&#xff1a; 服务注册服务续约服务发现服务下线维护集群节点&#xff08;未写完&#xff09; 而这些功能主要由netflix eureka实现&#xff0c;其客户端实现类为Discov…

SpringCloud Eureka Server 源码

Server端&#xff0c;又可以称之为注册中心&#xff0c;其作用简单的说&#xff0c;可以总结为以下几点&#xff1a; 接收客户端的注册信息&#xff0c;把这些信息存起来 供其它客户端查询注册信息同步其它节点的注册信息剔除失效的客户端实例自我保护 可是具体是怎么实现的呢…

ActiveMQ性能优化笔记

ActiveMQ性能优化笔记队列的类型环境搭建踩到的坑消息入队的性能消息持久化同步/异步发送消息acitveMQ服务器通信方式消费者消费optimizeACK以前都是看看消息队列的文章&#xff0c;程序里简单的调用一下接口&#xff0c;一直没有详细的搭建&#xff0c;并不了解其中的细节。导…