• Java中的异常处理


    异常定义

      异常 - 程序中的错误。

        编译时异常 - 编译时出现的错误;

        运行时异常 - 程序运行时发生的错误,程序会终止于发生错误的语句;

      Throwable 类 是所有Java异常 的 父类 ;Error 类(不讨论,无法挽救)、 及 Exception 类 是其子类;

    异常分类

      1、非检查性异常 - 在编译时不检查该错误,只在运行时才会发生;也就是说,如果程序中的某条语句有潜在的发生

        非检查性异常的风险时,程序还是会通过编译的;所有RuntimeException以及其子类的异常都属于非检查性异常;

      2、检查性异常 - 除了 RuntimeException之外的 Exception的子类异常 都是检查性异常;检查性异常必须处理,否则不会通过编译;

    异常处理

      1、自行处理

     1 try{
     2     //try块
     3     //有可能发生异常的语句,放到try块中运行;
     4     //如果try块中没有发生异常,try运行结束后,会继续catch后面的代码运行;
     5     //如果一旦发生异常。程序就会中止于发生错误的语句,根据异常种类,继续到catch块中去运行;
     6     }catch(Exception e){
     7         //catch块
     8         //任一catch块运行完以后,所有catch捕捉结束,会继续运行catch后面的代码;
     9         //Exception e 作为兜底,当有其他catch语句时,exception e 必须放在最后;
    10     }finally{
    11         //必须执行的代码;即使try块中有return语句或者break语句跳出循环;
    12         //收尾工作的代码;比如说关闭打开的文件、关闭网络连接、关闭数据库连接;
    13         //除非使用了System.exit(0)语句时,finally代码块中的内容不被执行;
    14 }    

      2、向上抛出 - throws

        throws - 声明方法有可能会抛出什么类型的异常;

         - 由方法的调用者进行异常处理;

    自定义异常

      throw - 用法格式: throw 异常对象;

          throw new 自定义异常类名();

    总结

      思考:何时使用throw向上抛出,何时使用try、catch自行处理?

        其实只要稍稍换位思考,这个问题不难回答,如果方法层的上一层需要知道是否发生了异常,则向上抛出;

        如果方法层的上一层只需要返回结果,并不需要知道是否发生过异常,则try、catch处理。

  • 相关阅读:
    Django 查询filter 常见查询方法
    Django form表单
    Django的认证系统
    django 中间件
    tricks or tips
    Git
    Paper Reading: A Brief Introduction to Weakly Supervised Learning
    Paper Reading: Dynamic Routing Between Capsules (NIPS 2017)
    Paper Reading: Recombinator Networks: Learning Coarse-to-Fine Feature Aggregation (CVPR 2016)
    Paper Reading: 3D Hand Pose Estimation: From Current Achievementsto Future Goals (CVPR 2018)
  • 原文地址:https://www.cnblogs.com/coffeerun/p/5733179.html
Copyright © 2020-2023  润新知