【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捕获。


三、总结:

     异常处理,值得拥有!

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






































相关文章
|
2天前
|
JavaScript 前端开发 Java
Java数字化产科管理系统源码,多家医院应用案例,可直接上项目
Java开发的数字化产科管理系统,已在多家医院实施,支持直接部署。系统涵盖孕产全程,包括门诊、住院、统计和移动服务,整合高危管理、智能提醒、档案追踪等功能,与HIS等系统对接。采用前后端分离架构,Java语言,Vue前端,若依框架,MySQL数据库。优势在于提升就诊效率,降低漏检率,自动报表生成,减少重复工作,支持数据研究,并实现医院与卫计委平台的数据互通,打造全生育周期健康服务。
19 4
|
2天前
|
设计模式 Java 开发者
如何在Java项目中实现领域驱动设计(DDD)
如何在Java项目中实现领域驱动设计(DDD)
|
3天前
|
Java 编译器
Java中的异常处理机制详解
Java中的异常处理机制详解
|
2天前
|
IDE Java 程序员
深入理解Java中的异常处理与调试技巧
深入理解Java中的异常处理与调试技巧
|
2天前
|
设计模式 算法 搜索推荐
Java中的设计模式及其在实际项目中的应用
Java中的设计模式及其在实际项目中的应用
|
4天前
|
IDE Java Apache
如何使用Maven管理Java项目依赖
如何使用Maven管理Java项目依赖
|
3天前
|
XML Java 数据库连接
【项目问题解决】 java.lang.IllegalArgumentException: XML fragments parsed
**问题摘要:** Java 应用在执行MyBatis映射时抛出`IllegalArgumentException`,指出XML片段缺少`com.xxx.xxx.xxx.xxx.dao.SingleApasInfoDao.selectListCondition`的值。此异常暗示XML映射文件存在错误或未定义指定方法。解决策略包括检查映射文件中标签的完整性与属性设置,修复可能的XML格式错误,以及确保使用的XML解析器支持所需特性,如有必要,升级解析器。
8 1
|
6天前
|
SQL XML JavaScript
【若依Java】15分钟玩转若依二次开发,新手小白半小时实现前后端分离项目,springboot+vue3+Element Plus+vite实现Java项目和管理后台网站功能
摘要: 本文档详细介绍了如何使用若依框架快速搭建一个基于SpringBoot和Vue3的前后端分离的Java管理后台。教程涵盖了技术点、准备工作、启动项目、自动生成代码、数据库配置、菜单管理、代码下载和导入、自定义主题样式、代码生成、启动Vue3项目、修改代码、以及对代码进行自定义和扩展,例如单表和主子表的代码生成、树形表的实现、商品列表和分类列表的改造等。整个过程详细地指导了如何从下载项目到配置数据库,再到生成Java和Vue3代码,最后实现前后端的运行和功能定制。此外,还提供了关于软件安装、环境变量配置和代码自动生成的注意事项。
|
5天前
|
JavaScript 前端开发 Java
(JAVA)一套成熟在用的智能化产科电子病历系统,源码交付可直接上项目
在人类探索与人性化的产科管理系统的征途中,我们深知每一步都承载着对未来新生命健康与家庭幸福的深切关怀。
12 0
(JAVA)一套成熟在用的智能化产科电子病历系统,源码交付可直接上项目
|
6天前
|
消息中间件 Java 中间件
如何在Java项目中实现高效的消息队列系统
如何在Java项目中实现高效的消息队列系统