Java异常处理和设计

  • 时间:
  • 浏览:0

try...catch...; try....finally......; try....catch...finally...

异常外理和设计的有好多个建议

检查异常原因分析分析了不要 的try…catch代码,时候有什么都有检查异常对开发人员来说是无法合理地进行外理的,比如SQLException,而开发人员却不得不去进行try…catch,原来就会原因分析分析老会 出显原来一种生活状况:逻辑代码只有很少的几行,而进行异常捕获和外理的代码却有什么都有行。原来不仅原因分析分析逻辑代码阅读起来晦涩难懂,一点降低了程序的性能。

1)throws出显在最好的方式的声明中,表示该最好的方式之全部都是抛出的异常,一点交给上层调用它的最好的方式程序外理,允许throws里面跟着多个异常类型;

比如使用空的引用、数组下标越界、内存溢出错误等,那此全部都是意外的状况,背离大伙儿程序一种生活的意图。错误在大伙儿编写程序的过程中会老会 处在,包括编译期间和运行期间的错误,在编译期间出显的错误有编译器帮助大伙儿共同修正,然而运行期间的错误便全部都是编译器力所能及了,一点运行期间的错误往往是难以预料的。

6.外理多次在日志信息中记录同有好多个多多多异常

1、对代码块用try..catch进行异常捕获外理;

典型的非RuntimeException包括IOException、SQLException等。

在程序设计中,进行异常外理是非常关键和重要的一累积。有好多个多多多程序的异常外理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,时候有好多个多多多项目从头到尾没有考虑过异常外理,当程序出错从哪里寻找出错的根源?

展示给用户错误提示信息最好未必跟程序混淆共同,比较好的最好的方式是将所有错误提示信息贴到 去有好多个多多多配置文件中统一管理。

时候声明抛出的异常是运行时异常,此最好的方式的调用者可不时需选则 地进行异常捕获外理。

1.try,catch,finally

7. 异常外理尽量贴到 去高层进行

在Java中,所有异常类的父类是Throwable类,Error类是error类型异常的父类,Exception类是exception类型异常的父类,RuntimeException类是所有运行时异常的父类,RuntimeException以外的一点继承Exception的类是非运行时异常。

五.异常外理和设计的有好多个建议

5.未必将提供给用户看的信息贴到 去异常信息里

下面大伙儿来看一下异常机制中3个关键字的用法以及时需注意的地方。

这段代码和里面一段代码的区别是,在实际的createFile最好的方式中并没有捕获异常,很久用throws关键字声明抛出异常,即告知一种生活 最好的方式的调用者此最好的方式之全部都是抛出IOException。没有在main最好的方式中调用createFile最好的方式的时候,采用try...catch块进行了异常捕获外理。

未必把上层类的异常贴到 去最前面的catch块。比如下面这段代码:

那此是异常

时候你想学习Java可不时需来一种生活 Q群,首先是220,里面是142,最后是906,里面可不时需学习和交流,全部都是资料可不时需下载。

里面的useExceptionsForFlowControl()用有好多个多多多无限循环来增加count直到抛出异常,一种生活 做法并没有说让代码不易读,很久使得程序执行传输速率降低。

下面看有好多个多多多示例:

谨慎地使用异常,异常捕获的代价非常高昂,异常使用不要 会严重影响程序的性能。时候在程序中并能用if句子和Boolean变量来进行逻辑判断,没有尽量减少异常的使用,从而外理未必要的异常捕获和外理。比如下面这段经典的程序:

当然时候没有处在异常,则catch块不要 执行。一点finally块无论在那此状况下全部都是会执行的(这点要非常注意,一点累积状况下,全部都是将释放资源的操作贴到 去finally块中进行)。

时候抛出的异常对象是运行时异常,此最好的方式的调用者可不时需选则 地进行异常捕获外理。

时候声明抛出的异常是非运行时异常,此最好的方式的调用者时需显示地用try..catch块进行捕获时候继续向上层抛出异常。

2、在该代码的最好的方式体外用throws进行抛出声明,告知此最好的方式的调用者这段代码之全部都是出显那此异常,你时需谨慎外理。此时有一种生活状况:

在Java中,异常类的特征层次图如下图所示:

从一种生活 例子说明,无论try块时候catch块中不是中有 return句子,全部都是执行finally块。

时候有使用文件读取、网络操作以及数据库操作等,记得在finally中释放资源。原来不仅会使得程序占用更少的资源,也会外理未必要的时候资源未释放而处在的异常状况。

被try块包围的代码说明这段代码之全部都是处在异常,一旦处在异常,异常便会被catch捕获到,一点时需在catch块中进行异常外理。

典型的RuntimeException包括NullPointerException、IndexOutOfBoundsException、IllegalArgumentException等。

3)时候父类的最好的方式声明的异常类型只有非运行时异常(运行时异常),则子类在重写该最好的方式的时候声明的异常也只有有非运行时异常(运行时异常),只有中有 运行时异常(非运行时异常)。

尽量将异常统一抛给上层调用者,由上层调用者统一之时怎么还可以进行外理。时候在每个出显异常的地方都直接进行外理,会原因分析分析程序异常外理流程混乱,不不利于后期维护和异常错误排查。由上层统一进行外理会使得整个程序的流程清晰易懂。

一点,在一般状况下,我未必尽量将检查异常转变为非检查异常交给上层外理。

1.只在必要使用异常的地方才使用异常,未必用异常去控制程序的流程

二.Java中怎么还可以外理异常

可不时需看出,在try块中处在FileNotFoundException时候,就跳到第有好多个多多多catch块,打印"file not found"信息,并将"step2"赋值给返回值,一点执行finally块,最后将返回值返回。

只在异常最开始英语 英语 了了处在的地方进行日志信息记录。什么都有状况下异常全部都是层层向上跑出的,时候在每次向上抛出的时候,都Log到日志系统中,则会原因分析分析无从查找异常处在的根源。

时候你想学习Java可不时需来一种生活 Q群,首先是220,里面是142,最后是906,里面可不时需学习和交流,全部都是资料可不时需下载。

checked exception(检查异常),也称非运行时异常(运行时异常以外的异常很久非运行时异常),java编译器强制程序员时需进行捕获外理,比如常见的IOExeption和SQLException。对于非运行时异常时候不进行捕获时候抛出声明外理,编译全部都是会通过。

有好多个多多多块执行的顺序为try—>catch—>finally。

在Java中异常被当做对象来外理,根类是java.lang.Throwable类,在Java中定义了什么都有异常类(如OutOfMemoryError、NullPointerException、IndexOutOfBoundsException等),那此异常类分为两大类:Error和Exception。

一旦你决定抛出异常,你就要决定抛出那此异常。这里面的主要疑问很久抛出检查异常还是非检查异常。

Java中怎么还可以外理异常

  本小节讨论子类重写父类最好的方式的时候,怎么还可以选则 异常抛出声明的类型。下面是三点原则:

try关键字用来包围之全部都是出显异常的逻辑代码,它单独无法使用,时需配合catch时候finally使用。Java编译器允许的组合使用形式只有以下一种生活形式:

异常的英文单词是exception,字面翻译很久“意外、例外”的意思,也很久非正常状况。事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误。

throws表示出显异常的一种生活时候性,未必全部都是处在那此异常;throw则是抛出了异常,执行throw则一定抛出了一种生活异常对象。两者全部都是消极外理异常的最好的方式(这里的消极并全部都是说一种生活 最好的方式不好),很久抛出时候时候抛出异常,一点不要 由最好的方式去外理异常,真正的外理异常由此最好的方式的上层调用外理。

时候将一种生活 程序稍微修改一下,将finally块中的return句子注释加带,运行结果是:

在Java中时候时需外理异常,时需先对异常进行捕获,一点再对异常状况进行外理。怎么还可以对时候处在异常的代码进行异常捕获和外理呢?使用try和catch关键字即可,如下面一段代码所示:

Exception,也很久大伙儿老会 见到的一点异常状况,比如NullPointerException、IndexOutOfBoundsException,那此异常是大伙儿可不时需外理的异常。

当然catch块可不时需有多个,注意try块只有有有好多个多多多,finally块是可选的(一点最多只有有有好多个多多多finally块)。

三.深刻理解try,catch,finally,throws,throw3个关键字

8. 在finally中释放资源

比如下面这段代码:

这段程序的输出结果为:

在有多个catch块的时候,是按照catch块的先后顺序进行匹配的,一旦异常类型被有好多个多多多catch块匹配,则不要 与里面的catch块进行匹配。

也很久在Java中进行异常外理句子,对于之全部都是处在异常的代码,可不时需选则 一种生活最好的方式来进行异常外理:

Exception类的异常包括checked exception和unchecked exception(unchecked exception也称运行时异常RuntimeException,当然这里的运行时异常并全部都是前面我所说的运行期间的异常,很久Java中用运行时异常一种生活 术语来表示,Exception类的异常全部都是在运行期间处在的)。

1)父类的最好的方式没有声明异常,子类在重写该最好的方式的时候只有声明异常;

在类继承的时候,最好的方式覆盖时怎么还可以进行异常抛出声明

unchecked exception(非检查异常),也称运行时异常(RuntimeException),比如常见的NullPointerException、IndexOutOfBoundsException。对于运行时异常,java编译器未必求时需进行异常捕获外理时候抛出声明,由程序员自行决定。

一点时候最好的方式有返回值,切忌未必再finally中使用return,以全部都是使得程序特征变得混乱。

在捕获了异常时候那此全部都是做,至少忽略了一种生活 异常。千万未必使用空的catch块,空的catch块原因分析分析你在程序中隐藏了错误和异常,一点很时候原因分析分析程序出显不可控的执行结果。时候你非常肯定捕获到的异常不要 以任何最好的方式对程序造成影响,最好用Log日志将该异常进行记录,以便时候方便更新和维护。

4.注意catch块的顺序

3、在代码块用throw手动抛出有好多个多多多异常对象,此时全部都是一种生活状况,跟2)中的类似:

当然还可不时需采用throw关键字手动来抛出异常对象。下面看有好多个多多多例子:

Error是无法外理的异常,比如OutOfMemoryError,一般处在一种生活 异常,JVM会选则 终止程序。一点大伙儿编写程序老会 需关心类似异常。

第3个catch的FileNotFoundException将永远不要 被捕获到,时候FileNotFoundException是IOException的子类。

(时候最终将异常抛给main最好的方式,则至少交给jvm自动外理,此时jvm会简单地打印异常信息)

四.在类继承的时候,最好的方式覆盖时怎么还可以进行异常抛出声明

我希望程序在运行期间出显了错误,时候置之不理,程序便会终止或直接原因分析分析系统崩溃,显然这全部都是大伙儿希望看到的结果。一点,怎么还可以对运行期间出显的错误进行外理和外理呢?Java提供了异常机制来进行外理,通过异常机制来外理程序运行期间出显的错误。通过异常机制,大伙儿可不时需更好地提升程序的健壮性。

2.切忌使用空catch块

以下是根据前人总结的一点异常外理的建议:

2)时候父类的最好的方式声明有好多个多多多异常exception1,则子类在重写该最好的方式的时候声明的异常只有是exception1的父类;

一.那此是异常

2.throws和thow关键字

以下是本文的目录大纲:

其他人建议尽量外理检查异常的使用,时候未必该异常状况的出显很普遍,时需提醒调用者注意外理句子,就使用检查异常;一点使用非检查异常。

2)一般会用于程序出显一种生活逻辑时程序员主动抛出一种生活特定类型的异常。throw只会出显在最好的方式体中,当最好的方式在执行过程中遇到异常状况时,将异常信息封装为异常对象,一点throw出去。throw关键字的有好多个多多多非常重要的作用很久 异常类型的转换(会在里面阐述道)。

一点在catch块中进行捕获。

这是一种生活外理异常的最好的方式。在Java中还提供了另一种生活异常外理最好的方式即抛出异常,顾名思义,也却句子一旦处在异常,我把一种生活 异常抛出去,让调用者去进行外理,其他人不进行具体的外理,此时时时需到throw和throws关键字。

3.检查异常和非检查异常的选则

深刻理解try,catch,finally,throws,throw3个关键字

一点时候有好多个多多多项目异常外理设计地不要 ,又会严重影响到代码质量以及程序的性能。一点,怎么还可以高效简洁地设计异常外理是一门艺术,本文下面先讲述Java异常机制最基础的知识,一点给出在进行Java异常外理设计时的有好多个建议。

最后打印出的是"finally",返回值被重新覆盖了。

在使用try..catch..finally块的时候,注意千万未必在finally块中使用return,时候finally中的return会覆盖已有的返回值。下面看有好多个多多多例子:

时候抛出的异常对象是非运行时异常,此最好的方式的调用者时需显示地用try..catch块进行捕获时候继续向上层抛出异常。