java代码例子_程序员快速弄清Java异常体系,拒绝痛苦编程,开发效率加倍

ccd7b75250d5ac510a5ea6574f8333ca.png

知己知彼方能百战不殆,在小编初学Java时候特别怕程序报异常,经常会因为异常不知所措,相信这个问题应该是所有 初学者都会有的心理感受;如果你也有这种感受,那么只有一种解决方法: 迎难而上,攻克Java异常体系,长痛不如短痛,只要清楚了Java的异常体系,就不会再有这种感受了。下面跟着小编来窥探Java的异常体系吧。

一、Java异常体系其实很简单

其实Java的异常体系是非常简单的,简单到只要你看过本文就能明白百分之八九十的样子。当你清楚了Java的异常体系 那么在遇到项目执行异常的时候,基本看报错的异常就大概明白问题出在哪里,遇到的错误多了,就成长了,处理的问题就是 你未来在技术路上所积累的财富。

4a39ed4beb4ec15743c57062899591d8.png

在Java的异常体系中 Throwable 我们可以理解为是一个根异常,即所有的异常都是它的子类

67fa4a83a4ced5ae07a8c385fe865538.png

二、Error

前面我们说了Java的异常体系中 Throwable 可以理解是一个根异常,那么 Error 就是这个根节点的一个子节点。 Error 类对象由 Java 虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。程序无法处理的异常,一般伴随着jvm虚拟机停止,或者断电之类 这种问题,是无法通过程序来解决的。

这种异常基本很少,如果遇到也不要慌,跟你的业务逻辑没有关系,顶多是Java代码写的有问题,只要不是业务问题其实大多都能先通过重启解决; 但是假如项目还未上线,只是在开发过程中出现这种问题一定要弄清楚原因,是那一部分代码编写异常导致的,否则上线可能有重大隐患

经验教学:

  1. 如果是在项目系统过程中遇到这种问题,可能是因为Jar包冲突导致的。
  2. 如果是在项目运行过程中遇到这种问题,可能是因为对象创建过多没有释放,导致堆栈溢出。这个时候就要看GC是否频繁,然后对堆栈日志进行分析,看存在最多的对象是哪一个,然后分析代码解决。

三、Exception

Exception 异常时我们平时在开发中遇到最多,其实 Exception 也分为两种即:

  1. checkException 编译异常,这种异常,是哪些没有遵守java语言规则,容易看出和解决的
  2. uncheckException 运行异常,运行异常,具有不确定性,往往难以排查,包括处理逻辑问题。

然而 checkException 和 uncheckException 其实只是一个概念,并没有对应的 Java异常类。我们基本可以忽略 checkException 因为这种异常基本现在的编译器都会给我们做了,我们在写代码时候就会实时的给我提示错误了。我们 只用关心 uncheckException即可。

uncheckException

ab136f4e11128e03d4493a8f0d5e2281.png

RuntimeException + Error 和其子类都是属于 uncheckException

前面我们已经对 Error 做了说明,现在就主要来看下 RuntimeExceptionRuntimeException 从名字来看就是 运行异常,所谓运行异常就是可能在程序运行过程中发生的异常,这种异常一般是可以通过代码逻辑进行处理的。 我们举例一个例子,我们都知道0不能作为除数。但是假如在下面这个代码中

139c538b0be3a77fa96c6f310323d2b4.png

当输入a=8,b=2,那么结果就是4。

1eef973e5bff54d42fc2667860bd2af5.gif

假如我们输入b=0呢?

学过数学都知道0不能做除数,程序也不运行你这么输入,但是却不能阻止你,只能通过报错的方式来告诉你。

a45fd821fa8a0f51900299e9d06f2b2f.png

那么我们就要对这个异常进行处理,当发现有这个异常就在控制台来提醒用户。那么代码就会变成这样

bf240b0cf7f319356326075d7043680b.png

当出现算术异常直接提示: "0不能作为除数,请输入不为0的任意数"

e73e4a8a735d07f521fafaceca81b5d0.png

那么像这种程序中无可避免会出现,且又能通过逻辑来处理的异常就是运行异常。运行异常一般都可以正常运行,只是在特定情况下会导致异常发生。 像这面这个例子,我们只要看到 ArithmeticException 就知道是算术异常。所以只要我们对运行异常类有一个认识,其实就能解决大多数的程序问题了。 下面我们来看下运行异常都要有哪些类吧。

364b2e30198384f825d46087590fcc40.gif

只要对下面运行异常类进行熟悉了,基本就清楚掌握了Java的异常体系了

1e1a62bbeb731c78578c0597a5365410.png
6639cdf2b7fc8e6acd90e2593c8753d3.png

以上就是常见的运行异常类,当然Java中还有很多不常见的异常类。剩下的我们就可以在日常工作中去学习了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java多条件判断_Java基础教程,第七讲,条件控制、循环语句、数组

学完此次课程,我能做什么?学完此次课程我们将掌握Java中的条件判断和多种循环语句,并且掌握数组的定义和初始化,以及几个常用的数组函数。学习此次课程,需要多久?10分钟课程内容和其他语言一样Java使用条件…

文件上传java前端怎么写_做一个文件上传,前端是ajax提交数据后台是java,这个错误怎么办...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼严重: Servlet.service() for servlet [dispatcherServlet] in context with path [/bazx] threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to …

python对文件操作的相关函数_超全!python的文件和目录操作总结

文件的基本读写path rC:UsersBradyDocumentstmpwith open(path rdemo.txt, r, encodingutf-8) as f:content f.read()print(content)open()函数open(file, moder, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone)Open file and return a cor…

qq机器人源码_基于Springcloud+vue+oAuth2.0全家桶模拟商城项目源码分享

项目介绍功能点:模拟商城,完整的购物流程、后端运营平台对前端业务的支撑,和对项目的运维,有各项的监控指标和运维指标。技术点:核心技术为springcloudvue两个全家桶实现,采取了取自开源用于开源的目标&…

java静态页面我都做不出_Java高并发:静态页面生成方案

提升网站性能的方式有很多,例如有效的使用缓存,生成静态页面等等。今天要说的就是生成静态页面的方式。这个也是我近期一直在搞的一个问题,近期在做使用html servlet做个人网站,为什么是这2个东西呢?1、直接用servlet…

python 工厂模式与单例模式_python基础单例模式 工厂模式 策略模式 观察者模式...

一、单例模式单例:单个实例,确保某个类只有一个实例存在举例:1、登录app,当前的登录对象,只能有一个2、音乐播放器,正在播放的歌曲类而言,只能有一个实例1 import my_util # 被导入的模块会从…

js sleep函数_简单而面试中又常见的知识点:JS执行机制

在开始讲解之前,我们先来看一段代码:console各位小伙伴觉得上面的结果输出会是多少呢?如果你没有了解过javascript的执行机制的话,上面的题目可能会让你崩溃。不过别着急,先往下看,我保证你看到最后&#x…

护卫神怎么增加php版本_护卫神php套件 php版本升级方法(php5.5.24)

最近小编开始学习研究win2008 r2的php环境配置,发现护卫神的php套件非常好用,安装简单,但是因为php版本不是最新的版本,所以就想将php升级下,因为新版的php修复了一些bug所以这里就分享下方法,需要的朋友可…

servlet中doget和dopost的区别_Servlet学习

一.HTTP协议浏览器 ----------------------------------------->服务器请求 http协议&#xff08;包含&#xff1a;1.请求行2.请求头3.空行4.请求实体&#xff09;url浏览器<-------------------------------------------服务器 响应htmlcssjsdata数据特点&#xff1a; 1…

python numpy dtype object_如何将(dtype = object)numpy数组值设置为Python列表,而不将numpy解释为值列表?...

我有一个dtype object数组,其中的值是Python列表或np.nan.我想用[无](不是无)替换np.nan的值.对于一个纯Python列表,我已经可以使用[x if(x不是np.nan)其他[无] for x in s],并且将数组转换为列表对我来说很好,但是出于好奇,我想知道如何使用numpy数组来完成这项工作.困难在于…

php curl跨域cookie_php使用curl带cookie访问一直失败求助

Launcher:感谢你在百忙中抽空帮我。刚才我做了个对比&#xff1a;1、使用Microsoft Network Monitor 监听apache发送的数据包2、使用Microsoft Network Monitor 截获ie登录目标后台3、使用Microsoft Network Monitor 截获firefox登录目标后台由第一点得到&#xff1a;cookie确实…

python如何用idle启动_Python从IDLE启动的方法

学习Python就要先学会安装和启动&#xff0c;目前Python的启动方法有两种&#xff0c;从IDLE启动是比较常见的&#xff0c;也是小码王老师今天要教大家的&#xff0c;广大家长、小朋友们一起来学习了解一下吧。在Start(开始)菜单中&#xff0c;可以看到“Python2.5”下面的“ID…

java xml 节点路径,SelectSingleNode使用XPath为已知良好的xml节点路径返回null

回答(9)2 years ago我强烈怀疑问题与名称空间有关 . 尝试摆脱名称空间&#xff0c;你会没事的 - 但显然这对你的实际情况没有帮助&#xff0c;我认为这个文件是固定的 .我不记得如何在XPath表达式中指定命名空间&#xff0c;但我确信这是问题所在 .编辑&#xff1a;好的&#x…

php fastcgi exp,nginx +phpfastcgi 环境下 导出excel文件,超时,数据被截断问题,解决...

nginx 错误日志显示&#xff0c;访问超时2015/09/16 07:18:43 [error] 2108#0: *6 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.138.7, server: localhost, request: "GET /test/index.php?mlists.e…

python爬虫软件安装不了_Mac os 下 python爬虫相关的库和软件的安装

由于最近正在放暑假&#xff0c;所以就自己开始学习python中有关爬虫的技术&#xff0c;因为发现其中需要安装许多库与软件所以就在这里记录一下以避免大家在安装时遇到一些不必要的坑。一. 相关软件的安装&#xff1a;1. homebrew:homebrew 是mac os系统下的包管理器由于功能齐…

php中文删除乱码部分,PHP中文乱码解决办法

一&#xff0e; 首先是PHP网页的编码1. php文件本身的编码与网页的编码应匹配a. 如果欲使用gb2312编码&#xff0c;那么php要输出头&#xff1a;header(“Content-Type: text/html; charsetgb2312")&#xff0c;静态页面添加&#xff0c;所有文件的编码格…

hdfs 多租户_【技术干货】常见的HDFS面试问答精选

最常见的HDFS面试问答1. 什么是HDFS&#xff1f;答&#xff1a;HDFS代表Hadoop分布式文件系统&#xff0c;该系统将大型数据集存储在Hadoop中。它可以在商用硬件上运行&#xff0c;并且具有很高的容错能力。HDFS遵循主/从体系结构&#xff0c;其中许多计算机在集群上运行。群集…

python装饰器常见问题_python 装饰器常见用法

跟踪调用class tracer: # State via instance attributesdef __init__(self, func): # On decoratorself.calls 0 # Save func for later callself.func funcdef __call__(self, *args, **kwargs): # On call to original functionself.calls 1print(call %s to %s % (self…

php通过url传递变量,PHP:如何在模态URL中放置和传递变量

所以,我有一个按钮,可以在同一页面中直接链接到模态.这是按钮和网址href"main_user.php?user_id<?php echo $user[user_id]; ?>#myModal"class"btn btn-warning">(我尝试在#modal之前回显$user_id)是不是&#xff1f;单击按钮后,将出现模态.这…

python 根据类名 查找module_关于 Python 命令中的 m 参数

在命令行中使用 Python 时&#xff0c;它可以接收大约 20 个选项(option)&#xff0c;语法格式如下&#xff1a;python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]本文想要聊聊比较特殊的“-m”选项&#xff1a;关于它的典型用法、原理解析与发…