java异常处理总结(代码片段)

happyliu happyliu     2023-01-07     635

关键词:

一、Java 异常继承框架

技术分享图片

Error:

Error类对象由 Java 虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。

Exception:

在Exception分支中有一个重要的子类RuntimeException(运行时异常),这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生;而RuntimeException之外的异常我们统称为非运行时异常,类型上属于Exception类及其子类,从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。

注意
Error和Exception的区别:Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程;Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。
?提示
除了RuntimeException及其子类以外,其他的Exception类及其子类都属于检查异常,当程序中可能出现这类异常,要么使用try-catch语句进行捕获,要么用throws子句抛出,否则编译无法通过。
?提示
对于运行时异常、错误和检查异常,Java技术所要求的异常处理方式有所不同。
由于运行时异常及其子类的不可查性,为了更合理、更容易地实现应用程序,Java规定,运行时异常将由Java运行时系统自动抛出,允许应用程序忽略运行时异常。
对于方法运行中可能出现的Error,当运行方法不欲捕捉时,Java允许该方法不做任何抛出声明。因为,大多数Error异常属于永远不能被允许发生的状况,也属于合理的应用程序不该捕捉的异常。
对于所有的检查异常,Java规定:一个方法必须捕捉,或者声明抛出方法之外。也就是说,当一个方法选择不捕捉检查异常时,它必须声明将抛出异常。

二、异常处理原则

异常处理语法

try
    //code that might generate exceptions    
catch(Exception e)
    //the code of handling exception1
catch(Exception e)
    //the code of handling exception2
 finally 

一个例子:

public class Ex1 
 
    public static void main(String[] args) 
        try
        System.out.println(Ex1.getResult());
        catch(Exception e)
            e.printStackTrace();
            System.out.println("截获异常catch");
        finally
            System.out.println("异常处理finally");
        
    
 
    public static int getResult() throws Exception
        int a =100;
         
        try
             
            a=a+10;
            throw new RuntimeException();
        catch(Exception e)
            System.out.println("截获异常并重新抛出异常");
            throw new Exception();           
        finally
            return a;
        
    

输出如下:

截获异常并重新抛出异常
110
异常处理finally

“截获异常catch”却没有执行!
原因是在getResult()的finally中return一个值,等同于告诉编译器该方法没有异常,但实际上异常是有的,这样的结果是该方法的调用者却捕获不到异常,不要再finally中试图return一个值,这样可能会导致一些意想不到的逻辑错误,finally就是用来释放资源的!

注意:在finally中改变返回值的做法是不好的,因为如果存在finally代码块,try中的return语句不会立马返回调用者,而是记录下返回值待finally代码块执行完毕之后再向调用者返回其值,然后如果在finally中修改了返回值,就会返回修改后的值。显然,在finally中返回或者修改返回值会对程序造成很大的困扰,C#中直接用编译错误的方式来阻止程序员干这种龌龊的事情,Java中也可以通过提升编译器的语法检查级别来产生警告或错误,Eclipse中可以在如图所示的地方进行设置,强烈建议将此项设置为编译错误。

三、总结

Java的异常处理的知识点杂而且理解起来也有点困难,这里给大家总结了以下几点使用java异常处理的时候,良好的编码习惯:

1、处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理

2、在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常

3、对于不确定的代码,也可以加上try-catch,处理潜在的异常

4、尽量去处理异常,切记只是简单的调用printStackTrace()去打印

5、具体如何处理异常,要根据不同的业务需求和异常类型去决定

6、尽量添加finally语句块去释放占用的资源




java异常与反射总结(代码片段)

   1.异常      异常,简单来说,就是一个程序执行过程中发生的不正常情况的事件。它发生在程序的运行期间,干扰了正常的指令流程。如果没有处理异常,那么出现异常之后,程序会停止运行... 查看详情

java面试题总结之java基础(代码片段)

 1、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?答:Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个... 查看详情

java基础总结三(泛型异常)(代码片段)

文章目录Java基础总结三(泛型、异常)泛型泛型的创建泛型类泛型接口泛型方法类型擦除泛型的协变与逆变异常异常体系异常处理Java基础总结三(泛型、异常)泛型泛型的创建泛型类我们最常用泛型的地方就是... 查看详情

201771010135杨蓉庆《面对对象程序设计(java)》第九周学习总结(代码片段)

第7章异常、日志、断言和调试1、实验目的与要求(1)掌握java异常处理技术;(2)了解断言的用法;(3)了解日志的用途;(4)掌握程序基础调试技巧;一、理论知识1、异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执... 查看详情

异常处理数组(代码片段)

...型数组内存布局错误处理golang之中的错误处理与Java之中异常处理有异曲同工之妙,Java之中是try…catch…finally,go语言之中defer…panic…r 查看详情

异常处理数组(代码片段)

...型数组内存布局错误处理golang之中的错误处理与Java之中异常处理有异曲同工之妙,Java之中是try…catch…finally,go语言之中defer…panic…r 查看详情

java处理异常9个最佳实践(代码片段)

...Resource语句使用FinallyJava7的Try-With-Resource语句2.给出准确的异常处理信息3.记录你所指定的异常4.使用描述性消息抛出异常5.最先捕获特定的异常6.不要在catch中使用Throwable7.不要忽略Exceptions8.不要记录和抛出一个异常9.包装异常总结... 查看详情

java异常处理总结

    异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。Java中的异常可以是函数中的语句执行时引发的,... 查看详情

java进阶异常(代码片段)

文章目录1异常简介2异常处理简介3使用try-catch-finally处理异常4使用throw和throws实现异常处理①throws②throw5自定义异常6异常链7总结1异常简介错误在编写程序的过程中经常发生,包括编译期间和运行期间的错误在程序运行过程... 查看详情

王海珍201771010124《面向对象程序设计(java)》第九周实验总结(代码片段)

...部分  实验部分1、实验目的与要求(1) 掌握java异常处理技术;Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置。程序中出现的常见的错误和问题有:用户输入错误;设备错误;物理限... 查看详情

杨玲201771010133《面向对象程序设计(java)》第九周学习总结(代码片段)

...程序设计(java)》第九周学习总结第一部分:理论知识异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行。Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置。程序中出现的常... 查看详情

第八周课程总结&实验报告(代码片段)

总结:一、异常异常处理的格式try//有可能出现异常的语句catch(异常类异常对象)//编写异常的处理语句[catch(异常类异常对象)//编写异常的处理语句...][finally一定会运行盗的程序代码;]二、throws关键字:在定义一个方法的时候可以... 查看详情

李瑞红201771010111《第九周学习总结》(代码片段)

实验九异常、断言与日志实验时间2018-10-25第一部分:理论部分 1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行。Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置。&nbs... 查看详情

20165232第七周学习总结(代码片段)

第七周学习总结第八章异常控制流异常异常就是控制流中的突变,如图在处理器中,状态被编码为不同的位和信号。状态变化称为事件处理器检测到异常事件发生时,会进行一个间接过程调用。当异常处理程序完成处理后,根据... 查看详情

徐思201771010132《面向对象程序设计(java)》第九周学习总结(代码片段)

一、理论知识部分异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行。Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置。程序中出现的常见的错误和问题有:用户输入错误;设... 查看详情

python中的异常处理总结(代码片段)

1.异常分类错误Error:原因示例笔误像变量名写错,造成的语法错误逻辑错误算法写错了,例如原本逻辑是求和,但写成了乘积函数或者类使用错误这类也归为逻辑错误写代码时,错误是可以避免的。异常Exception有时候程序写的... 查看详情

马凯军201771010116《面向对象与程序设计java》第九周学习总结(代码片段)

一.理论知识部分 异常、日志、断言和调试1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行。2.Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置。3.程序中出现的常见的... 查看详情

这几种java异常处理方法,你会吗?(代码片段)

...软件开发的过程中,任何语言的开发过程中都离不开异常处理。本文分享自华为云社区《Java异常处理学习总结》,作者:zekelove。我们在软件开发的过程中,任何语言的开发过程中都离不开异常处理。如果不处理... 查看详情