【JAVA基础】[异常处理]项目中悄无声息的RuntimeException

简介: 【JAVA基础】[异常处理]项目中悄无声息的RuntimeException

 引:今天去面试,和面试官的一些对话,面试官简称 面:


   面:你们用的Dubbo微服务,dubbo是可插拔的,这个模块突然被拔掉了,或者不在注册中心上了(反正就是调不到别的服务了)想过会出现问题,怎么处理吗?


   我:没想过,编程的时候如果调不通别人的接口了,就觉得是不是服务器不稳定了,哪出问题了,开始联系组长。


   面:调不通了肯定会报错,错误出现在页面或者日志里,是不是?


   我:恩;


   面:那有没有想过,我们没有try catch 这些异常,但是为什么这些异常还会出现在日志里?原理是什么?


   我:(内心是有点崩溃的,想想把Java基础里关于异常处理的内容都看了一遍啊,还有没学到的)犹豫了一下,想不出来,说,JAVA虚拟机自动处理的。(面试的时候,还是要诚实的,不会的不要乱编,面试官大多懂的比我多,但是可以说自己的思路)


   面:原理是什么?没有东西会自然而言的产生效果,为什么会出现在日志里呢?


   我:想不到了。


   面:Java异常有两种,一种是已知的异常,写一些调用文件的函数,没有写文件路径,这时候会提示去捕获这个异常,声明这个异常,另一种是运行时异常,运行时异常会捕获各种异常,毕竟写一个函数不能写几千几万行异常捕获,那就不用写代码了。这些处理不了的运行时异常在基本的类里捕捉了,再打印出来。


   顿悟,这不就是前天学习的checked异常和Runtime异常嘛。


一、Java常见异常类之间的继承关系:



20170930231536579.jpg

Error错误:与虚拟机有关的异常,比如:系统崩溃,虚拟机错误,动态链接失败,这些错误无法恢复,或者不可能捕捉。

    Exception:分为RuntimeException checked异常



二、关于RuntimeExceptionitooRuntimeException


常见的异常:空指针,下标越界,参数校验,JVM已经对其进行序列化处理,自动catch住后,会抛出正常的异常信息。但是在ITOO项目中,可能因为要解决一下问题,引用了第三方技术:rabbitMQ,fastDFS等,catch的异常不属于JVM异常,没有经过JVM序列化,RuntimeException会对异常进行封装,导致客户端不能从异常中获取有效信息,抛出后,提示的信息可能不是问题本身,我们不知道问题出在哪了。所以,itoo中用itooRuntimeException对捕获的异常进行序列化处理,在controller中就可以看到我们想看到的内容了。再想想面试官的问题,就会想到,在调用别的服务调不通时出现的异常,就会被itooRuntimeException捕获。


三、总结:

     异常处理,值得拥有!

     遇到问题,使用一项技术,多站在架构师的角度问自己一个为什么!






































相关文章
|
29天前
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
386 1
|
3月前
|
前端开发 JavaScript Java
Java 学习路线规划及项目案例中的技术栈应用解析
内容包括:**Java 17核心特性**(如sealed class、record)与模块化开发;Spring Boot 3 + Spring Cloud微服务架构,涉及响应式编程(WebFlux)、多数据库持久化(JPA、R2DBC、MongoDB);云原生技术**如Docker、Kubernetes及CI/CD流程;性能优化(GraalVM Native Image、JVM调优);以及前后端分离开发(Vue 3、Spring Boot集成)。通过全栈电商平台项目实战,掌握从后端服务(用户、商品、订单)到前端应用(Vue 3、React Native)的全流程开发。
158 9
|
2月前
|
Java 编译器 数据库连接
Java异常处理:写出更健壮的代码
Java异常处理:写出更健壮的代码
152 0
|
1月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
290 63
|
2月前
|
安全 Java 测试技术
Java 大学期末实操项目在线图书管理系统开发实例及关键技术解析实操项目
本项目基于Spring Boot 3.0与Java 17,实现在线图书管理系统,涵盖CRUD操作、RESTful API、安全认证及单元测试,助力学生掌握现代Java开发核心技能。
102 1
|
2月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
139 0
|
4月前
|
IDE Java 开发工具
【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
IntelliJ IDEA创建Java项目的图文详细步骤,手把手带你创建Java项目
658 10
【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
|
2月前
|
缓存 Java 数据库
Java 项目分层架构实操指南及长尾关键词优化方案
本指南详解基于Spring Boot与Spring Cloud的Java微服务分层架构,以用户管理系统为例,涵盖技术选型、核心代码实现、服务治理及部署实践,助力掌握现代化Java企业级开发方案。
140 2
|
2月前
|
人工智能 安全 Java
掌握Java反射:在项目中高效应用反射机制
Java反射是一种强大功能,允许程序在运行时动态获取类信息、创建对象、调用方法和访问字段,提升程序灵活性。它在框架开发、动态代理、注解处理等场景中广泛应用,如Spring和Hibernate。但反射也存在性能开销、安全风险和代码复杂性,应谨慎使用。

热门文章

最新文章