java 异常处理发生异常_处理Java中的异常

java 异常处理发生异常

每个程序员都希望编写一个完美的程序。 也就是说,程序运行时没有任何障碍。

好吧,如果希望是马,乞g就会骑。 除了程序员的所有愿望之外,有时还会发生无法预料的情况。

在Java中,这些无法预料的情况通常被归类为“例外”。 异常会干扰我们的代码的顺利运行,并在不处理的情况下终止程序。 处理异常涉及在异常发生时编写另一组代码来管理这些异常。

有两种例外,一类是我们无能为力的,另一类是我们可以做的。 对于第二类,正确处理异常非常重要,因为我们不希望代码因异常而终止。

当我们的代码以意外的方式运行时,就会发生异常(这就是为什么可以将异常视为一种错误)。 这些意外的方法可能是将数字除以零,尝试以不存在的索引访问数组或试图访问不存在的对象。 所有这些方式都会导致产生异常代码,这些代码不遵循正常路径或处理程序设计。

发生异常时,将向用户报告说明,以解释引起异常代码的原因。 报告此异常的行为称为引发异常。

异常处理是Java不可或缺的一部分。 每个Java开发人员都需要了解如何处理异常,以便他们可以编写干净,优美的代码 。

抛出异常

一辆使用劣质燃油的汽车会散发出烟,以便我们知道出了点问题– Java程序中引发的异常等效于该烟。 当Java程序中发生异常时,需要将异常报告给系统用户,以便用户确切了解出了什么问题。 通过向用户报告此异常,我们引发了异常。

程序员可以导致引发异常,或者Java语言引发异常。 当程序的用户执行某些已明确启动为程序中的非法或错误操作时,程序员可能引发异常。 同样,如果程序的输入违反了一些基本的算术或编程原理(例如,将数字除以零),并且程序运行的环境出现了内存不足等问题,则Java语言可能会引发一些异常。

因此,当Java程序引发异常时,会发生什么? 创建任何Throwable子类的对象,该对象根据异常的类型解释异常的性质。 例如,可以引发ArithmeticException对象,这表明发生了算术错误。

可以从Java程序引发的任何异常均被视为Throwable类的对象,该类分为两个子类: Exception类和Error类。

程序员无法处理的异常在Error类中。 您可以修复的异常在Exception类中。

错误类别

有些例外就像自然灾害,它们会发生,而您只需要接受它们的发生即可。 属于Error类的异常是您无法修复的事情。 它们也只是发生,而您必须接受它们的发生。

Error类异常通常用于表明您的代码在其中运行的环境有问题。 这些类型的问题可能包括内存不足-内存不足的情况不是您编写代码来处理的事情,因此您不能简单地对其进行处理。 这些异常只会终止您的程序。

通过重新启动程序可以修复错误类异常,但前提是必须解决导致程序终止的环境中的问题。 在我们的示例中,对该错误的修复可能包括手动恢复用于执行程序的空间。

只是知道Java不能解决Error类的异常。 程序所有者必须在代码终止后执行某些操作,以确保程序可以再次运行。

例外类别

在Exception类下发生时可以处理的异常。 Java编程语言具有多种异常,可以在子类RuntimeException下进行处理

这些例外包括被零除的例外,当您尝试将数字除以零时会发生。

之所以能够处理Exception类的异常,是因为它们表示某些问题发生在代码内部,而不是在运行代码的环境中。

您可以通过编写代码来确保这些异常不会首先发生,从而避免此类异常;如果确实发生了此类异常,则可以编写代码以确保这些异常不会终止您的程序执行。 为了处理异常,将它们放置在try块中稍后我们将介绍它。

错误类和异常类之间的基本区别在于,错误类将导致程序终止并且无法对其进行处理,但是如果正确处理了异常,则可以使异常类不导致程序终止。

涉及异常的重要关键字

Java中的异常处理可以通过使用一些关键字(例如try,catch,throw,throwsfinally)来实现 。 这些关键字用于管理如何引发和处理异常。

任何可能导致引发异常的代码都写入try块中。 可能引发异常的代码通常处理输入值,但不能保证始终是程序员想要的方式。

想象一个试图走路的婴儿。 您只需将手放在婴儿周围,以确保婴儿不会跌落并受伤。 同样,try块用于包围在运行时可能引发异常的代码。

在try块之后紧接着是catch块, finally块或两者。

catch块完全按照其名称的含义执行操作:它捕获try块中引发的异常。 由于可以引发许多异常,因此catch块必须指定要处理的异常类。

在catch块之外,还有finally块,当try块完成时, finally起作用。 因此,finally块等待try块执行。 请注意,try块之后可以是catch块,finally块或两者的组合。 如果try块具有catch块,则最后在catch后面运行,否则,finally块在try块之后立即运行。

因此,将finally块想象为try块的最终手段。 finally块通常用于处理try块可能未正确利用的资源。

通过使用方法标题中的throws关键字,方法或执行Java中特定功能的一段代码可以引发一种异常。

Error或RuntimeException及其子类中的异常无需包含在throws语句中。 它们被归类为“未经检查的异常”,这些异常应以任何可能的方式加以阻止,并且不得有意识地允许其发生。

程序中可能发生的未经检查的异常数量如此之大,以至于我们无法将所有未经检查的异常都扔进一个方法中。 这将导致该方法失去其清晰度,因此Java假定运行程序的程序员没有故意抛出这些类型的异常。

发生问题时,每种方法都可能引发未检查的异常,因此无需在throws语句中添加未检查的异常。

throw关键字用于专门在方法中引发异常。 它只是用于动词throw中的正常用法:它抛出Throwable Class的对象。 您不能抛出不在Throwable类或其任何子类中的对象。 注意不要使用throw关键字抛出Unchecked Exceptions。 使用throw关键字引发Checked Exception。

为什么要处理异常?

因为我们编写的每个程序都会在某一时刻抛出异常,所以了解如何处理它们很重要,这样一来,异常不会总是在程序中每次发生时都终止 。

了解属于错误类或异常类的异常之间的区别可以帮助您确定是否可以解决问题。

在编写用于处理异常的代码时,请确保您理解并正确使用了try,catch和finally块,并记住尽力防止抛出未经检查的异常。

学习如何在异常发生之前进行处理将有助于您编写简洁,优雅的代码。

翻译自: https://www.javacodegeeks.com/2017/12/handling-exceptions-java.html

java 异常处理发生异常

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

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

相关文章

android提交项目到svn,Android Studio 配置SVN,通过Share project提交项目和实现忽略文件...

1:首先电脑本身装的SVN必须在bin目录下包含svn.exe文件,如下图。这个文件是在安装SVN时选择安装command line client tools才会出现。如果没有,需要重新安装SVN。2:将SVN关联到Android Studio中声明:在这里我使用的And…

数据库 MySQL 如何设置表的主键自增起始值

文章目录表已有数据,truncate 之后再设置 auto_increment,可行表已有数据,delete from 之后再设置 auto_increment,可行主键自增起始值重置查询表名为 tf_user 的 auto_increment 值创建表时设置 AUTO_INCREMENT 参数表已有数据&a…

数独游戏技巧从入门到精通_如何引导孩子入门九宫格数独?掌握4个技巧口诀,孩子思维提升快...

九宫格数独对孩子的思维训练有着非常不错的效果,我们完全可以用其培养孩子对数字的兴趣,并培养孩子严谨的逻辑推理态度。那九宫格数独有没有技巧口诀呢?对于孩子来说,过于复杂的技巧他们也掌握不了。所以,我们培养孩子…

Spring Boot和Apache Camel

随着软件世界的发展,正在开发更加复杂的系统,这些系统必须相互集成。 它从SOA开始,然后一直到微服务。 骆驼是我想到的第一大集成工具,因为如今的骆驼springboot是一个非常强大的组合。 第一步是将骆驼依赖项包含到我们的sprin…

MySQL 如何复制表

文章目录一、复制表结构及数据到新表二、只复制表结构到新表(一)使用关键字 like(二)使用 select 语句三、真正完整复制表四、复制表,同时重新定义字段名(拷贝旧表中部分的字段)五、复制表&…

android获取应用安装通知消息,如何在Android 11 上获取已安装应用列表

在Android 11上,我们可以看到很多的更新都是用来保护隐私的,如果你的app 在使用PackageManger的方法来获取安装的应用列表,那么在Android11上,就需要做一点改变了。我们来看看一下获取应用列表的代码,会不会和你的很相…

python特征选择pso_粒子群优化算法(PSO)之基于离散化的特征选择(FS)(三)

作者:Geppetto前面我们介绍了特征选择(Feature Selection,FS)与离散化数据的重要性,总览的介绍了PSO在FS中的重要性和一些常用的方法,介绍了FS与离散化的背景,介绍本文所采用的基于熵的切割点和最小描述长度原则(MDLP)…

postgresql_PostgreSQL开放自由

postgresqlOpen Liberty是源自WebSphere Liberty的有趣的新型OSS Java EE应用服务器。 您可以将Open Liberty配置为使用PostgreSQL作为其默认数据源&#xff0c;如下所示&#xff1a; 将<datasource> &#xff0c; <jdbcDriver>和<library>指令添加到server…

MySQL注释形式_可执行注释语句(/*!...*/)_数据库注释_数据库脚本注释_SQL脚本注释格式_SQL脚本注释分类

文章目录单行注释多行注释可执行注释为什么要把可执行的 SQL 语句写在注释里面呢&#xff1f;注释示例导入数据时禁止/激活索引测试禁止索引再导入数据的效率单行注释 SELECT * from tf_user; # 单行注释&#xff0c;从这个注释符号起直到该行结束 SELECT * from tf_user; -- …

苹果android投屏,iphone怎么投屏到mac?苹果手机投屏到苹果电脑方法

iphone和mac的使用人群越来越多,其中投屏功能却难倒了大部分新手用户,许多使用iPhone以及Mac的用户朋友都还不知道iPhone怎么投屏到mac,好奇的用户朋友马上点击查看iphone投屏到mac教程来实现这个具有科技革新感的功能吧。官方推荐方法1&#xff1a;用数据线- 1.使用lightning线…

微服务java模块内存管理_Java 9模块服务

微服务java模块内存管理接线与查找 Java长期以来都有一个ServiceLoader类。 它是在1.6中引入的&#xff0c;但是自Java 1.2以来就使用了类似的技术。 一些软件组件使用了它&#xff0c;但是使用并不广泛。 它可以用于模块化应用程序&#xff08;甚至更多&#xff09;&#xff0…

学python多大年龄可以学车_多大年龄可以学驾照?

展开全部最少要满 18 岁才32313133353236313431303231363533e4b893e5b19e31333365656662可以考部分车型的《机动车驾驶证》一、根据《中华人民共和国公安部令》第十一条规定申请《机动车驾驶证》的人&#xff0c;应当符合下列规定1. 年龄条件(1)申请小型汽车、小型自动挡汽车、…

Linux 命令之chgrp -- 用来改变文件或目录所属的用户组

文章目录命令介绍常用选项参考示例&#xff08;一&#xff09;修改指定目录及其所含的文件的用户组&#xff08;二&#xff09;更改指定文件的用户组&#xff08;三&#xff09;把指定文件的所属群组设成和参考文件的所属群组相同命令介绍 chgrp 是英语单词“change group”的…

signature=02d2eb69b4d24e2f9bb2956f66089339,Signature Balancing

摘要&#xff1a;Signatures are an important part of the design of a ship. In an ideal situation, signatures must be as low as possible. However, due to budget constraints it is most unlikely to reach this ideal situation. The arising question is which leve…

使用实例工厂方法实例化_一些工厂实例

使用实例工厂方法实例化我时不时地发现自己摸索了一些旧代码&#xff0c;找到了“我在哪里做过类似工厂的事情”的示例。 上周再次发生这种情况时&#xff0c;我决定只查找所有示例&#xff0c;并创建一个示例项目和有关该示例的博客文章。 所以在这篇文章中&#xff0c;我&a…

linux内核设计与实现 epub_Epoll学习服务器的简单实现-Linux内核Epoll结构

1.Begins~有的人学习linux编程很久&#xff0c;只知道网络编程是socket&#xff0c;bind&#xff0c; listen。。。&#xff0c;然而这些都是网络通信软件最基本的接口。在某网络公司待了y&#xff0c;也了解到公司的基础就是网络转发 &#xff0c;然而网络转发实现并非我们平时…

Linux 命令之 sftp -- 交互式的文件传输程序

文章目录一、命令介绍二、常用选项三、参考示例&#xff08;一&#xff09;使用 sftp 连接远程主机&#xff08;二&#xff09;使用 sftp 上传文件到远程主机&#xff08;三&#xff09;使用 sftp 从远程主机下载文件&#xff08;四&#xff09;查看远程主机的当前目录&#xf…

鸿蒙有安卓内核吗,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪

在华为开发者大会上&#xff0c;华为消费业务CEO 余承东&#xff0c;正式发布鸿蒙OS2.0&#xff0c;并宣布华为鸿蒙OS将全面启用全场景生态&#xff0c;并将于2020年12月发布手机版。余承东还表示&#xff0c;明年&#xff0c;华为的智能手机将全面升级&#xff0c;以支持鸿蒙操…

命名对象实体对象_我的对象命名

命名对象实体对象这是最常见的辩论之一。 大多数人对此主题有自己的见解&#xff0c;却没人能真正说出哪个是正确的。 我当然不能&#xff0c;但是尽管如此&#xff0c;我还是决定与大家分享我的想法&#xff0c;投入两美分&#xff0c;也许对某人会有帮助。 当我创建一个新类…

python查看关键字列表的命令是_Python 41 完整查询语句 和 一堆关键字

一&#xff1a;完整查询语句1、拷贝表 ***create table copy_table select *from customer ; 拷贝结构 与数据create table copy_table select *from customer where 0 > 1; 仅拷贝结构共同点&#xff1a; 索引 不能拷贝 描述不能拷贝(自增)[ ] 表示可选的{ }表示必选的增…