异常处理—错误抛出机制

错误抛出机制:

  把可能出现异常的代码写在try{}里,使用catch(){}设置一些异常陷阱来捕获异常。例如:

9aecdbf4dd8669418112366edb766c1f.png

134ad99a888a4c4155b9b420ed127642.png



没有异常处理时异常的抛出机制:

  为什么出现异常会在控制台上显示打印红色的异常呢?这是因为其实main方法外面还有一个try catchtry包围住main方法,catch捕捉异常,所以在main方法里没有写try catch来捕获出现的异常,这个异常就会往外抛到包围main方法的这个try catch,然后就会在控制台上打印出现的异常。

e0be4e5f1ef3d195d34a6853b813229c.png


异常抛出机制过程:

a00ccf709c066e7707c34364cc9ba2d6.png



异常家族:

  Thrwable是所有异常类的最高父类,它的两个子类Error(虚拟机报的异常)Exception(代码上报出的异常),只要是继承这两个类的都强制要写try catch不然就会直接报语法错误。Exception下还有一个RuntimeException子类(常见异常or不是很重要的异常),继承这个类的则不会要求写try catch,因为对开发熟练的工程师一般可以避免出现这种异常,不然所有异常都要求写try catch的话,这样写一段代码就要写一个try catch会显得烦赘。

64499a242f880925fa2a81e805e2365c.png



通用异常陷阱:

  异常对象里还有通用的捕获陷阱,一般有其他陷阱的情况下通用陷阱要写在最后面,写在前面的话全部异常都会进入这个陷阱了,开发中最好少写通用陷阱,因为发生错误了不知道具体是什么错误。

87e9a7ebc626ee9c596ef3d32b527459.png


try catch里代码执行流程:

da8ed0c33149a08049a7a81afbf3659a.png

  因为在第14行代码出现类型转换错误,而且没有相对应的异常捕获陷阱,这个异常就会往外抛,抛到main方法外的try catch里。因为这个异常没有被处理所以下面的代码一句都不会执行的,所以只会打印1 2然后打印异常。


  因为在第16行代码出现内存溢出错误,然后就进入相对应的异常捕获陷阱里,异常被处理了后面的代码就会继续执行,所以打印 1 2 3 4 7 8。这种情况要看虚拟机分配的内存,如果是分配的少于2G就只会打印1 2 3 7 8,如果分配的少于1G就只会打印 1 2 7 8

562e4e2856bb684dcffaaeba23562acd.png


   try catch可以进行嵌套使用,因为在第12行代码出现数组下标越界错误,而且没有相对应的异常捕获陷阱,这个异常就会往外抛,抛到main方法外的try catch里,被打印出来。因为这个异常没有被处理所以外层try catch下面的代码一句都不会执行的。 

39353e2309bf0c3e98cb2e1f346251be.png



  没有出现类型转换错误的原因是因为,s的值是null没有内存里面是空的,所以在转换的时候不明确s是什么类型,所以就会转换成功没有出现错误,一旦里面有值即便是””也会报错。

da9e56ee10a76eb7bc2f102e631314f2.png





本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1974350,如需转载请自行联系原作者

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

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

相关文章

【ArcGIS Pro风暴】Data Interoperability Tools快速将CASS等高线dwg转为shp案例教程

ArcGSI提供了多种将cass制作的dwg格式的地形图数据转为shp矢量格式。在ArcMap中的转换方法可以参考: CAD格式数据转ArcGIS数据方法总结,本文以案例的形式,讲解在ArcGIS Pro2.5中如何借助Data Interoperability Tools中的Quick Import工具将dwg格式的等高线完美转换为shp,转…

.Net 之时间轮算法(终极版)

关于时间轮算法的起始我也认真的看了时间轮算法相关,大致都是如下的一个图在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述个人认为的问题大部分文章在解释这个为何用时间轮的时候都再说假设我们现在有一个很大的数组,专门用…

C语言试题143之写一个函数,求一个字符串的长度,在 main 函数中输入字符串,并输出其长度

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:写一个函数,求一个字符串的…

无人机影像去雾批处理神器使用方法(附神器下载)

文章目录 1. 软件特点:2. 影像去雾批处理演示3. 神器下载地址1. 软件特点: (1)设置简单。只需要设置输入输出路径。 (2)支持多级路径。路径下可以有子路径,输出文件夹结构与输入文件夹结构一致 (3)支持并行处理。可同时打开几个窗口,只需要设置同样路径即可 2. 影…

[转]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件

文章目录 前言一、nginx简介 1. 什么是 nginx 和可以做什么事情2.Nginx 作为 web 服务器3. 正向代理4. 反向代理5. 负载均衡6.动静分离二、Nginx 的安装(Linux:centos为例) 1. 准备工作2. 开始安装3. 运行nginx4. 防火墙问题三、 Nginx 的常用命令和配置文件 1. Nginx常用命令 …

在 .NET 6 中使用 Startup.cs 更简洁的方法

如果您在关注 .NET 6,那么您应该知道,在 .NET 6 项目中,没有 Startup.cs 文件,现在使用了 Program.cs 文件来完成统一的配置。我之前发了一篇使用在 .NET 6 项目中使用 Startup.cs 的文章。在 .NET 6 项目中使用 Startup.cs能否能…

【ArcGIS Pro微课1000例】0005:ArcGIS Pro 2.5基于矢量数据制作拉伸三维地图案例

ArcGIS Pro 2.5中,可以基于某个字段,对矢量数据进行拉伸,制作精美的三维地图。本文以中国省级行政区划数据为例,基于面积字段制作3d地图。 文章目录 1. 新建局部场景2. 地图符号化3. 三维矢量地图制作1. 新建局部场景 打开ArcGIS Pro 2.5,新建局部场景项目,并保存。 2. …

C语言试题144之编写函数输入,输出 5 个学生的数据记录。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:编写 input()和 output()函数…

分布式(一致性协议)之领导人选举( DotNext.Net.Cluster 实现Raft 选举 )

分布式(一致性协议)之领导人选举( DotNext.Net.Cluster 实现Raft 选举 )继分布式锁之后的又一高可用技术爽文之分布式领导选举 或者说 分布式一致性协议的实现分布式选举是实现高可用的必备技术,想实现主从,就必须得有选举的策略,有主从才会有…

C语言试题146之反向输出一个链表

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:反向输出一个链表 2 、温馨提…

【ArcGIS Pro微课1000例】0006:ArcGIS Pro 2.5三维显示DEM数字高程模型

通过ArcGIS的学习,我们知道,ArcScene可以实现二维数据的三维显示,是将二维数据(例如DEM)进行自定义表面浮动拉伸。那么ArcGIS Pro中能不能实现DEM的三维显示呢? ArcScene三维显示结果: 目前所采用的ArcGIS Pro 2.5版本还不能直接将DEM进行三维显示,我们的做法是参照Ar…

程序员的自我修养:有助于提高沟通能力的7本书

直接影响工作效率的四种能力:沟通能力、自学能力、自我管理能力、问题解决能力。提高沟通能力,是程序员提高自我修养的必要条件。相信很多人跟我一样,性格内向,信仰技术,很少有跟人说话的愿望,只是想看代码…

玩转 Linux 之:磁盘分区、挂载知多少?

转载于:http://my.oschina.net/leejun2005/blog/290073 在做日志机扩容的时候,发现运维同学将一块硬盘的挂载点没有同以前的日志机保持一致,考虑到这会给日后的维护带来麻烦,于是尝试着手修改,在修改的同时&#xff0c…

C# NanoFramework 点灯和按键 之 ESP32

本来周末是要搞个大的,WIFI 和 Web网页之类的,奈何搞了两天,并与外国友人聊过后,才发现是固件有问题,晚上与大佬进行交流后才发现,原来ESP32S的官方固件有问题,搞不了。所以,建议买的…

【ArcGIS Pro微课1000例】0002:ArcGIS Pro 2.5二三维联动显示

ArcGIS Pro是一款全新的桌面应用程序,它改变了桌面GIS的工作方式,以满足新一代WebGIS应用模式。ArcGIS Pro采用Ribbon界面风格,给人全新的用户体验。它作为一个高级的应用程序,可以对来自本地、ArcGIS Online、或者Portal for ArcGIS的数据进行可视化、编辑、分析。同时,实…

C语言试题147之创建一个链表并且排序输出这个链表

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:创建一个链表并且排序输出这…

PHP中刷新输出缓冲

2019独角兽企业重金招聘Python工程师标准>>> http://www.cnblogs.com/mutuan/archive/2012/03/18/2404957.html 转载于:https://my.oschina.net/wuzhencan/blog/652259

C语言试题145之创建一个链表

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:创建一个链表 2 、温馨提示 …

[转]IntelliJ IDEA 2019.3正式发布,给我们带来哪些新特性?

每篇一句 工欲善其事必先利其器 ——《论语卫灵公》 前言 千呼万唤始出来。自从JetBrains在今年7月24日发布了IDEA 2019.2版本后,从9月份开始我便一直在关注此版本正式版的发布。JetBrains公司在9月中旬就对外公布了下一个主要版本 2019.3的Roadmap,而且…

FineReport中以jws方式调用WebService数据源方案

在使用WebService作为项目的数据源时,希望报表中也是直接调用这个WebService数据源,而不是定义数据连接调用对应的数据库表,这样要怎么实现呢? 在程序中访问WebService应用服务,将WebService返回的数据转为程序数据集&…