- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
28Java中的异常机制
Java中的异常机制什么是异常(Exception)? 运行时期发生的不正常情况,与编译无关。 中断产生了正常指令流的事件。编译时出的错误是语法的错误;异常与编译无关,是在程序执行的过程中出现的。Java中用类的形式对不正常情况进行了描述和封装对象,描述不正常情况的类称为异常类。 以前正常流程代码和问题处理代码相结合,现在将正常流程代码和问题处理代码相分离,目的就是为了提高阅读性。 其实异常就是java通过面向对象的思想将问题封装成了对象, 用异常类对其进行描述 。不同的问题用不同的类进行描述。 比如数组就有角标越界,空指针等等。出现的问题会很多,意味着描述问题的类也狠多,但是都有些共性,将他们的共性进行向上抽取,就形成了异常体系。 最终,问题(或叫作不正常情况)分成了两大类 :一是一般不可处理的,称为Error;二是可以处理的 ,称为Exception异常。无论Error还是Exception,都是问题,问题发生时,就应该及时抛出,让调用者知道并处理, Error和Exception都具有可抛出的特性,Throwable。该体系的特点就在于Throwable 以及所有的子类都具有可抛性,不是该体系的不具有可抛性 。 Error 是有JVM抛出的严重性的问题, 这种问题一般不做针对性处理,直接修改程序。 Exception 是可以处理的。Throwable下面主要有两个Error和Exception,Throwable体系中,子类的后缀都是用父类的名作为后缀名,阅读性比较强。一旦发生异常就可以把当前的方法结束掉。方法中抛出异常,立即结束此方法,主方法直接抛出异常给JVM,抛出异常后,不会在执行方法其他的语句。如果方法中可能会产生异常,则必须抛出异常(抛出异常利用关键字throw),并必须在此方法的声明处声明此异常或在方法体中捕捉此异常,声明异常利用shows关键字,如果某方法中调用了可能会抛出异常的方法,则调用了可能抛出异常方法的方法也需要抛出此异常或者直接进行捕捉。对异常对象的处理有两种方法:一是直接抛出(需要声明),二是直接进行捕捉并处理。可抛性到底是什么?怎么体现可抛性呢?答:通过两个关键字来实现 ,throws 和 throw, 凡是可以被这两个关键字操作的类或者对象都具有可抛性。throws和throw的不同点:(1)throws 使用在方法声明处 ,throw使用在方法内部,(2) throws后面跟的是异常类名,可以同时声明多个异常类,之间利用都好隔开,单对于方法来说,遇到一个异常便不再继续正常执行了,throw后面跟的是异常对象(一般是匿名对象,new XXX()),只可以抛出一个异常对象。 如果想自定义一个类为异常类,必须让此类继承异常体系,因为只有成为异常体系中的一个子类,才具有可抛性,才可以被两个关键字throw和throws 操作。定义异常类的命名规范:使定义的异常类的名字以继承的父类的名字为后缀,这是规范,不是强制的。在方法声明处声明可能产生的异常的目的是:让调用此方法的调用者对此异常进行处理。如果想在异常提示信息处输出想要的提示信息,在自己定义的异常类的构造方法中调用super(****);即可了,因为对于提示信息的输出方法父类已经写好了,子类直接调用父类的相应的构造方法即可了。简单介绍异常中的几个方法:Exception中有个叫作getMessage();方法,可以调用出异常提示信息 的具体内容,返回值是String类型;Exception中有个叫作toString();方法,返回的是String类型,内容为异常类名和异常提示信息;Exception中有个叫作printStackTrace();方法,返回值为空,直接就会输出异常类名、异常提示信息以及异常发生的位置。JVM默认情况下,异常处理机制调用的就是异常对象的这个方法。Log4j :就是log for java 的简写,记录的是java运行的日志信息。就可以利用重写printStackTrace方法,直接输出到文件中。Throwable 与 Runnable异常Exception 的分类:编译时被检测异常Check Exception(编译器会提醒修改)(此异常可以处理,故声明出来此异常,然后对其进行处理即可):只要是Exception及其子类都是,但是除了子类RuntimeException体系。 异常一旦出现,希望在编译时就进行检测,使该异常有对应的处理方式。 总之,这种异常都会有针对性的处理。编译时不检测异常(运行时异常) Uncheck Exception( 编译器不会强制修改):(此异常是不可以处理的,既然不可处理,就没有必要声明出来,即使声明处理,也没法处理)Exception的子类RuntimeException及其子类
您可能关注的文档
- 2017年江苏省计算机硬件检任务书(中职组).doc
- 2017年江苏省南京市高考数学迎一模模拟数学试卷(解析版).doc
- 2017年广州一测文综地理试题含答案.doc
- 2017年河北中考历史教材知识梳理第二十八单元战后世界格局的演变.doc
- 2017年扬州市学业水平测试物理试卷.doc
- 2017年(2017届)广州一测文综地理试题.doc
- 2017年泰安初中毕业考试模拟冲刺卷(一).doc
- 2017年演讲比赛策划书.doc
- 2017年福建单招语文模拟试题二(附答案).docx
- 2017年质检计量部班组安全教育.doc
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)