zoukankan      html  css  js  c++  java
  • 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处理。

  • 相关阅读:
    C# List<string>和List<int>互相转换
    sourcetree跳过注册的方法
    列举 contentType: 内容类型(MIME 类型)
    nginx 使用过程中一些基础性问题总结
    MVC3升级到MVC4模型验证信息显示为英文问题及解决方案
    ckeditor:复制内容到ckeditor时,只保留文本,忽略其样式解决方法
    MVC从视图传参到Controller几种方式
    Window Service 计划任务
    Git命令行连Github与TortoiseGit 连Github区别
    For xml path
  • 原文地址:https://www.cnblogs.com/coffeerun/p/5733179.html
Copyright © 2011-2022 走看看