• 【java读书笔记】——java的异常处理


           程序在实际环境的运行过程中,安全成为需要首先考虑的重要因素之一,这也是用户和程序员最关心的问题。同时,Java语言健壮性也体现在了能够及时有效地处理程序中的错误,准确的说是Java的异常处理机制为解决安全问题提交了一份满意的答卷。

           先从整体上看一下本文要介绍的内容,然后进行详细的分析:

                                              


    1、异常的概念

            

           异常又称为例外,是特殊的运行错误对象,对应着Java语言特定的运行错误处理机制。

    上面的概念是书本上说的,下面我谈一下自己的看法

           其实异常处理机制提供了统一的机制来识别和响应程序错误,异常可以为我们解答3W(what、where、why)问题提供帮助。

    ①what

            如果异常机制使用恰当,被抛出异常的类型可以表明发生了什么程序错误。

    ②where

           发生异常之后,而Stack Trace可以清楚的告诉我们什么地方发生了错误。

    ③why

            为什么发生错误则可以通过看异常信息和Stack Trace来分析。

            如果你的异常不能解决上面的3W问题,那么可以证明你对异常使用一定不正确。


    2、异常的分类


                                                               

           这张类图可以很好的说明 Thorwable类是所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。 其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常,下面将详细讲述这些异常之间的区别与联系:


    1.Error与Exception


           Error:称为错误,由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理,也可以说成不可以处理的异常

           Exception:所有异常类的父类,其子类对应了各种各种具体可能出现的异常事件,一般需要用户声明或捕获,也叫可处理的异常


    2.runtimeException与非运行时异常(其他异常)


           runtimeException:一类特殊的异常,如被0除、数组下界超范围,其产生比较频繁,处理麻烦,如果声明或捕获将会对程序可读性和运行效率影响很大。因此系统自动检测并将它们交给缺省的异常处理程序,这样的异常可以处理也可以不处理

           非运行时异常:是RuntimeException以外的异常,类型上都属于Exception类及其子类,这类异常是必须要处理的异常,否则程序就不能编译通过。


    3、异常的捕获和处理

          

           异常的捕获和处理是不容易把握的事情,如果处理不当,不但会造成程序的可读性差,而且会导致系统的性能下降,甚至会造成难以发现的错误。异常处理涉及到五个关键字:try、catch、finally、throw、throws。下面我们一一介绍:


    1、异常处理的基本语法

         try{
          //程序代码
        }catch(异常类型 异常的变量名){
          //异常处理代码
        }finally{
          //异常发生,方法返回之前,总是要执行的代码
        }
    


    ①try语句

           1.try语句指定了一段代码,该段代码一次捕获并处理例外的范围。

           2.在执行过程中,该段代码可能会产生并抛出异常,catch语句捕获并处理。

           3.没有例外产生,所有的catch代码段都被忽略不执行。

    ②catch语句

           1.catch语句是对异常进行处理的代码,每个try可以有一个或多个catch语句,用于处理可能产生不同类型的异常对象。
           2.在catch中声明的异常对象,封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法获得这些信息。

    ③finally

           1.finally语句为异常处理提供了统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序的状态做统一的管理。

           2.无论try语句是否抛出异常,finally语句都会被执行

           3.finally语句可以释放资源如:关闭打开的文件、删除临时文件等等。

    ④throw与throws

          throw用来在方法体内抛出一个异常。throws用来在方法名后声明方法可能会抛出什么异常。

     

        public static void test() throws Exception{
          //抛出一个检查异常
                throw new Exception("方法test中的Exception");
            } 
    


    2、 异常处理的一般原则


           1、 异常能处理就早处理,抛出不去还不能处理的就想法消化掉或者转换为RuntimeException处理。

    因为对于一个应用系统来说,抛出大量异常是有问题的,应该从程序开发角度尽可能的控制异常发生的可能。

           2、对于异常,先逮小异常再逮大的异常。

    因为程序的执行跟人的正常思维是一样,直接捕获基类异常,处理异常变的毫无意义。


    4、总结


          一张图,对于异常机制更深刻的理解,才能更好的使用;五个关键字是技术的必备武器,你必须得懂;先逮小的,再逮大的,对于异常的处理原则要把握好,否则就是功归一篑。


  • 相关阅读:
    EF 错误解决
    TortoiseHg 学习笔记 (转)
    Mysql 命令行 使用 (转)
    2017-9-3 时间字符串格式化(转)
    2017-8-25 c# 获取url参数的五种方法(转)
    alert 的使用方法
    表单关键字查询写法
    Mysql和Mysqli的区别
    php MySQL中 增、删、改、查的写法格式
    一维、二维数组 与 常用的返回数组 以及 fetch_all与fetch_row的区别
  • 原文地址:https://www.cnblogs.com/ainima/p/6331011.html
Copyright © 2020-2023  润新知