Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。\x0d\x0a用try来指定一块预防所有异常的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的异常的类型。\x0d\x0athrow语句用来明确地抛出一个异常。\x0d\x0athrows用来标明一个成员函数可能抛出的各种异常。\x0d\x0a可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,异常的框架就放到堆栈上面,直到所有的try语句都完成。异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。\x0d\x0a一、相关知识\x0d\x0a1、在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。\x0d\x0aThrowable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。\x0d\x0aError(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在 Java中,错误通过Error的子类描述。\x0d\x0aException(异常):是程序本身可以处理的异常。Exception 类有一个重要的子类 RuntimeException。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。\x0d\x0a注意:异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。\x0d\x0a2、通常,Java的异常(包括Exception和Error)分为可查的异常(checked exceptions)和不可查的异常(unchecked exceptions)。\x0d\x0a可查异常(编译器要求必须处置的异常):正确的程序在运行中,很容易出现的、情理可容的异常状况。可查异常虽然是异常状况,但在一定程度上它的发生是可以预计的,而且一旦发生这种异常状况,就必须采取某种方式进行处理。除了RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。\x0d\x0a不可查异常(编译器不要求强制处置的异常):包括运行时异常(RuntimeException与其子类)和错误(Error)。\x0d\x0a3、Exception 这种异常分两大类运行时异常和非运行时异常(编译异常)。程序中应当尽可能去处理这些异常。\x0d\x0a运行时异常:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。\x0d\x0a非运行时异常 (编译异常):是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。\x0d\x0a二、处理机制\x0d\x0a在 Java 应用程序中,异常处理机制为:抛出异常,捕捉异常。\x0d\x0a抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。\x0d\x0a捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适 的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适 的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。\x0d\x0a对于运行时异常、错误或可查异常,Java技术所要求的异常处理方式有所不同。\x0d\x0a由于运行时异常的不可查性,为了更合理、更容易地实现应用程序,Java规定,运行时异常将由Java运行时系统自动抛出,允许应用程序忽略运行时异常。\x0d\x0a对于方法运行中可能出现的Error,当运行方法不欲捕捉时,Java允许该方法不做任何抛出声明。因为,大多数Error异常属于永远不能被允许发生的状况,也属于合理的应用程序不该捕捉的异常。\x0d\x0a对于所有的可查异常,Java规定:一个方法必须捕捉,或者声明抛出方法之外。也就是说,当一个方法选择不捕捉可查异常时,它必须声明将抛出异常。\x0d\x0a能够捕捉异常的方法,需要提供相符类型的异常处理器。所捕捉的异常,可能是由于自身语句所引发并抛出的异常,也可能是由某个调用的方法或者Java运行时 系统等抛出的异常。也就是说,一个方法所能捕捉的异常,一定是Java代码在某处所抛出的异常。简单地说,异常总是先被抛出,后被捕捉的。\x0d\x0a任何Java代码都可以抛出异常,如:自己编写的代码、来自Java开发环境包中代码,或者Java运行时系统。无论是谁,都可以通过Java的throw语句抛出异常。\x0d\x0a从方法中抛出的任何异常都必须使用throws子句。\x0d\x0a捕捉异常通过try-catch语句或者try-catch-finally语句实现。\x0d\x0a总体来说,Java规定:对于可查异常必须捕捉、或者声明抛出。允许忽略不可查的RuntimeException和Error。
JAVA语言如何进行异常处理?
给您推荐相同类型的内容:
笔记本电脑可以和电视连接么?
笔记本电脑可以和电视连接,通过HDMI线连接即可。、具体操作如下:1、找到一根HDMI线如图所示。2、将HDMI线插在笔记本的HDMI接口上。3、找到电视机的“HDMI1”孔位,并把HDMI线的另一端插上。4、使用电视遥控器,点击“信号ipad怎么清理缓存文件和数据呢?
苹果ipad清理缓存和数据的方法如下:工具/原料:iPad 8、iOS 14.4、本地设置。1、打开设置,选择“通用”。2、选择“iPad存储空间”。3、我们可以看到占用存储空间排名前几的app,依次清理这些app的缓存即可。4、打开微如何自己制作电脑桌面壁纸?
1、首先,自己可以根据自己的喜欢选择一张自己喜欢的图片;2、其次,不管是通过网上下载的图片,还是在电脑上已有的照片,都需要知道储存在哪里了,找到它的保存路径;3、其次,双击打开图片;4、右击,选择 设为桌面背景;5、最后,自己查看电脑蓝牙设备在哪里
以win10为例,电脑蓝牙设备在设备管理器中,可通过以下方法打开:方法一:1、在电脑搜索栏中输入“蓝牙”,点击“蓝牙和其他设备设置”。2、在“蓝牙和其他设备”中点击“蓝牙”按钮,开启蓝牙。方法二:1、点击“开始”菜单栏中的“设置”。2、点击字母数字对照表如何输入汉子和数字
首先下载“字符信息与二进制转换工具”用百度搜索下载即可。打开软件如何用键盘上的数字输入汉字及汉字密码输入想要转换的汉字,例如:百度。由于一个汉字在十六进制中是以“4个符号代表的”,所以我们得到的是8个符号。如何用键盘上的数字输入汉字及汉字密网页css设置鼠标移动有特效
首先我们创建一个html文件,写出html文件的一些基础代码然后我们在网页中新建一个div,并新建一个无序列表并创建4个然后使用浏览器直接打开html文件,查看效果,可以看到我们创建的标签自带有一定的格式,接下来我们使用下面的代码去除标签的js清除object
删除对象,直接使用delete就可以了。比如:delete document.getElementById('div')删除一个属性的过程也很简单,就是将其置为undefined:user.name=undefinedu手机当电脑麦克风的5种方法
1.如何用苹果手机做笔记本的麦克风:在APP上下载一个麦克风,自己做一个双向音频输入输出线,一端插iphone,另一端接电脑的麦克风孔。2.苹果手机的秘密功能:1。输入关键词,你会在你的记事本和短信里找出所有相关条目,不管你删不删!解决方电脑太慢怎么清理
1、删除不必要的文件。使用电脑的时候,必须要知道桌面与c盘的文件会直接影响电脑的速度。在电脑的桌面与c盘中尽量少放东西与文件,可以移动到其他的盘中,减少桌面与C盘的内存。别忘了,回收站也是需要定期清理的。2、扩大内存。有的电脑本身配置较低,怎么给笔记本电脑加装固态硬盘?
具体步骤如下:1、右键单击这台电脑选择属性,如下图所示。2、属性界面点击设备管理器,如下图所示。3、设备管理器界面点击磁盘驱动器,就可以看到你的新添加的ssd,如下图所示。4、返回桌面,右键单击这台电脑选择管理,如下图所示。5、接下来需要苹果电脑怎么打开百度搜索
步骤如下:1、在iphone的屏幕上打开app store应用。2、点击底部的搜索栏目。3、搜索查找我的iphone关键字。4、找到并打开百度搜索软件。从macOS中的任何地方(Finder,另一个应用程序等),点击Command炒股心得总结范文精选
股票存在一定的风险,如果把握不准时机,很可能满盘皆输,下面就是我给大家带来的炒股心得总结范文精选,希望能帮助到大家!炒股心得总结范文精选一1.不要试图去猜大盘是否见顶,况且即使大盘见顶你手中的股票仍在补涨中,你也要卖waves插件在笔记本电脑中界面很小
电脑分辨率较高。waves插件是针对waves9而推出的插件管理软件,因电脑的分辨率较高,因此在运行时呈现的界面很小。笔记本电脑又被称为“便携式电脑,手提电脑、掌上电脑或膝上型电脑”,其最大的特点就是机身小巧,相比PC携带方便,是一种小型、手机怎么投屏到电脑啊
如果您使用的是华为手机和华为笔记本,可以通过以下方法操作:1.手机端打开 WLAN、蓝牙和 NFC 开关。2.电脑端开启 WLAN、蓝牙,并打开华为电脑管家。3.将手机(解锁状态下) NFC 区域触碰电脑华为分享感应区域或Huawei Sh笔记本电脑的电池应该怎么充电?
1、第一次充电时,你应该连续地把电池充电到12个小时,并且循环地完全充、放电3次以完全唤醒新电池。2、如果长时间使用外接电源,最好取下电池。很多朋友都没注意到这个问题,用外接电源时不取下电池不但影响电池寿命,还让笔记本电脑的散热负担变得更笔记本电池的正确使用方法
笔记本电池保养方法:1、激活新电池。 想让笔记本电池长寿,一定要有好的开端,这就得从购买笔记本时说起。新笔记本在第一次开机时电池应带有3%的电量,此时,应该先不使用外接电源,把电池里的余电用尽,直至关机,然后再用外接电源充电。回家后,还让电脑不休眠怎么设置
1、在界面左下角搜索栏搜索“控制面板”,并打开2、打开控制面板后,查看方式选择“大图标”3、选择电源选项4、界面左侧选择“更改计算机睡眠时间”5、使计算机进入睡眠状态改为"从不"6、保存修改电脑关闭睡眠模式的方法如下:TSJS 使用pako.js 压缩字符串和二进制
因为项目需要压缩字符串和二进制,找到了pako这个库:https:github.comnodecapako https:gitee.comrenew_old_romancepakotreemaster https:gJS 怎么制作数字、字母、汉字混合的验证码
*****************************************************效果倒是出来了,但是不是十分好看***********建议还是单选汉字或者去掉汉字看看*****************电脑的所有线怎么插?
一般4条线路:电源线——一般在机箱后面的;鼠标线——usb接口,任意插在机箱后面usb接口;键盘线——现usb接口,任意插在机箱后面usb接口。如不是,可以在背板能找到差不多一样形状接口;显示器和主机接线——看主机有没有独立显卡。如有在PHP中的htmldecode函数是什么意思
在PHP中&符号即传的是变量的引用而不是拷贝,引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,它们是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Utable表格中如何让文字左对齐
1、首先在table表格里,默认是显示两个边框线的,如果要设置成一条边框,在CSS中需要使用border-collapse设置为collapse,合并为一条边框。2、CSS设置表格的宽度和高度,使用width宽度和height高度来设置,代css模拟微信左上角悬浮窗
配置数据使用的。css模拟微信是一种模拟软件,可以进行多开微信,其左上角悬浮窗是配置数据使用的,十分方便。css是层叠样式表,是一种用来表现HTML或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。你说的动态悬浮窗不知道说的是哪css控制html隐藏和显示的属性是什么,两种,区别又是什么
css控制隐藏和显示的属性是什么,两种,区别又是什么display:none;隐藏display:block;显示display:none 与 visibility:hiddendisplay是隐藏不占据空间 后面的javascript API手册
javascript API中文手册chm,以及javascript参考文档教程。1、本书是 JavaScript 语言的参考手册,包括核心语言中的对象和客户端服务器端的扩展,JavaScript 是 Netscape 跨平台的基于对象的适js中如何设置cookie的保存时间呢?
设置cookie的保存时间,通过cookie的expires性质指定一个终止时间就可以了。也就是说,你在设置cookie的时候,你的cookie字串要像下面这样组合:var d= new Date()d.setHours(d.getHouCSS如何实现圆角表格边框
使用CSS3中的border-radiustable{border-radius:5pxoverflow:hidden}如果需要单独针对某一个角设置为圆角可以使用下面代码border-top-left-radius:5emborderHTML和XML的区别是什么?
HTML和XML的区别是:语法要求不同,标记不同,作用不同。具体区别为:1、语法要求不同:1. 在html中不区分大小写,在xml中严格区分。2. 在HTML中,有时不严格,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省js 函数怎么设置默认参数
1.php有个很方便的用法是在定义函数时可以直接给参数设默认值,如:function simue ($a=1,$b=2){return $a+$b}echo simue()输出3echo simue(10)输出12echo si南京html5培训机构排名哪个好?
随着HTML5的普及,越来越多的人了解HTML5,企业也会对求职者提出更高的要求,他们想招聘一些能马上开始工作的人,所以往往会招聘一些有项目开发经验的人。这就是为什么那么多计算机专业的大学生找不到工作,所以越来越多的大学生会选择在毕业前后参