zoukankan      html  css  js  c++  java
  • JAVA的异常与异常处理

    主要内容

    1.JAVA异常简介

    2.使用try..catch..finally实现异常处理

    3.JAVA中的异常抛出以及自定义异常

    4.异常链

    5.经验总结

    JAVA异常简介:

    有异于常态,和正常情况不一样,有错误出现。阻止当前方法或作用域继续执行的问题称之为异常。
    JAVA中的异常:
    1 JAVA中的所有不正常类都继承于Throwable类,Throwable主要有两个大类,一个是Error类,一个是Exception类。
    2 其中Error类包括虚拟机错误和线程死锁,一旦Error出现,程序就彻底挂了,被称为程序终结者。
    3 Exception类主要指编码环境,用户操作输入出现了问题,Exception主要包括两大类,非检查异常(RuntimeException)和检查异常(其他的一些异常)
    其子类主要有:
    非检查异常(运行时异常RuntimeException):【由JAVA虚拟机自动捕获】如空指针NullPointer、越界ArrayIndexOutofBounds、错误类型转换ClassCast、算数异常Arithmetic等
    检查异常CheckException:【需要手动添加捕获和处理语句】文件异常IO等
    异常处理的作用:
    将异常提示给用户或编程人员,使本来已经中断了的程序,以适当的方式继续运行或者退出并且能够保存用户的当前操作,或进行数据回滚,最后再把占用的资源释放掉。
     

    使用try..catch..finally实现异常处理:

    一、try-catch(多catch块 可以存在多个catch块来捕获多个异常)-finally
    (1)try块:负责捕获异常,一旦try中发现异常,程序的控制权将被移交给catch块中的异常处理程序。【try语句块不可以独立存在,必须与 catch 或者 finally 块同存】
    (2)catch块:如何处理?比如发出警告:提示、检查配置、网络连接,记录错误等。执行完catch块之后程序跳出catch块,继续执行后面的代码。 编写catch块的注意事项:多个catch块处理的异常类,要按照先catch子类后catch父类的处理方式,因为会【就近处理】异常(由上自下)。
    (3)finally:最终执行的代码,用于关闭和释放资源等
     
    异常处理 try-catch以及try-catch-finally
    try{
    //一些会抛出的异常
    }catch(Exception e){
    //处理该异常的代码块
    }finally{
    //最终要执行的代码
    }
    try会抛出很多种类型的异常,多个catch块捕获多种错误。 多重异常处理代码块顺序问题:先子类再父类(顺序不对也会提醒错误),finally语句块处理最终将要执行的代码
     

    JAVA中的异常抛出以及自定义异常:

    throw ---将产生的异常抛出(动作)
    throws --- 声明将要抛出何种类型的异常(声明)
     
    public void 方法名 (参数列表) throws 异常列表{
    //调用会抛出异常的方法或者
    throw new Exception();---先抛出异常
    }
     
    两个重要的关键字:throw和throws
    1.throws的异常列表可以是抛出一条异常,也可以是抛出多条异常,每个类型的异常中间用逗号隔开
    2.方法体中调用会抛出异常的方法或者是先抛出一个异常:用throw new Exception() throw写在方法体里,表示“抛出异常”这个动作
    3.当某个方法调用到会抛出异常的方法,就必须调用try catch语句块来尝试处理异常
    4.当调用者不知道或者不必处理异常时,就继续声明将抛出异常,给更上一层调用者处理
    5.尽管JAVA提供了大量种类的异常,我们在实际使用时还会用到自定义异常: 自定义异常:要么继承于意思相近的异常,要么继承于所有异常类的基类Exception
     
     
     
    自定义异常:
    class 自定义异常类 extends Exception{};
     

    异常链:

    有时候,我们可以把捕获的异常包装成新的异常,然后再新的异常里面添加对原始异常的引用,再把这个新异常抛出,他们就像是链式反应一样。
     
    实现异常链功能的基本写法:
     
    第二种写法:
     

    经验总结:

    1、处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
    2、在多重catch块的后面,可以加一个catch(Exception)来处理可能会被遗漏的异常。
    3、对于不确定的代码,也可以加上try-catch处理潜在的异常
    4、尽量去处理异常,切忌只是简单的引用printStackTrace()去打印输出。
    5、具体如何处理异常,要根据不同的业务需求和异常类型去决定
    6、尽量添加finally语句块去释放占用的资源
    7、使用函数区分各功能块。
     
     
  • 相关阅读:
    Unity资源打包之Assetbundle
    集社交与金融为一体,平安天下通怎样推动互联网金融创新?
    json和pickle模块
    sys模块
    os模块
    random模块
    datetime模块
    time模块
    logging模块

  • 原文地址:https://www.cnblogs.com/Wonderful-life217/p/8315243.html
Copyright © 2011-2022 走看看