ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java学习笔记_进阶008

2021-11-16 19:34:11  阅读:135  来源: 互联网

标签:java 进阶 try 编译 finally catch 008 异常


异常

  • java语言中异常是以什么形式存在的呢?

    • 1.异常在java中以类的形式存在,每一个异常类都可以创建异常对象

      • 类是模板,对象是实际存在的个体
  • java中异常处理机制

    • 异常在java中以类和对象的形式存在,那么异常的继承结构是怎样的?
      • 可以使用UML图来描述一下继承结构

        • 什么是UML?有什么用?
          • uml是一种统一建模语言,一种图标式语言(画图的)

          • uml不是只有java中使用,只要是面向对象的编程语言,都有UML

          • 一般画uml图的都是软件架构师或者是系统分析师,这些级别的人员使用的。软件设计人员使用UML

          • 在uml图中可以描述类和类之间的关系,程序执行的流程,对象的状态等等

  • Object下有Throwable(可抛出)

    • Throwable下有两个分支:error(不可处理,直接退出JVM),和exception(可处理)
    • exception下有两个分支
      • exception的直接子类:编译时异常(要求程序员在编写程序阶段必须预先对这些异常进行处理,如果不处理编译器报错,因此得名)
      • runtimeexception:运行时异常(在编写程序阶段,程序员可以预先处理,也可以不管,都行
  • 编译时异常和运行时异常,都是发生在运行阶段,编译阶段异常是不会发生的。

  • 编译时异常因为什么而得名?

    • 因为编译时异常必须在编译(编写)阶段预先处理,如果不处理编译器报错,因此得名。所有异常都是在运行阶段发生的,因为只有程序运行阶段才可以new对象。
  • 编译时异常和运行时异常

    • 编译时异常一般发生的概率比较高
    • 运行时异常一般发生的概率比较低
  • 编译时异常还有其他名字

    • 受检异常— CheckedException
    • 受控异常
  • 运行时异常还有其他的名字

    • 未受检异常— UnCheckedException
    • 非受控异常
  • 所有的异常都是出现在运行阶段的

  • java语言中对异常的处理包括2种方式

    • 第一种方式:在方法声明的位置上,使用throws关键字
    • 第二种方式:使用try … catch… 语句进行异常的捕捉
  • 一般不建议在main方法上使用throws,因为这个异常如果真正的发生了,一定会抛给JVM.JVM只有终止

    • 异常处理机制的作用就是增强程序的健壮性。怎么能做到,异常发生了也不影响程序的执行,所以一般main方法中的异常建议使用try…catch…进行捕捉。main就不要继续上抛了。
  • 深入了解try…catch…

    • catch后面的小括号中的类型可以是具体的异常类型,也可以是该异常类型的父类型
    • catch可以写多个,建议catch的时候,精确的一个一个处理,这样有利于程序的调试
    • catch写多个的时候,从上到下,必须遵守从小到大
  • 异常对象有两个非常重要的方法:

    • 获取异常简单的描述信息
      • String msg = exception.getMessage();
    • 打印异常追踪的堆栈信息— 在实际的开发中,建议使用这个
      • exception.printStackTrace();
  • 关于try…catch中的finally子句:

    • 在finally子句中的代码是最后执行的,并且是一定会执行的,即使try语句块中的代码出现了异常
    • finally语句通常使用在哪些情况下?
      • 通常在finally语句块中完成资源的释放/关闭
      • 因为finally中的代码比较有保障,即使try语句中的代码出现异常,finally中的代码依旧可以继续执行。
  • java中的语法规则(有一些规则是不能破坏的,一旦这么说了,就必须这么做)

    • java中有一条这样的规则:
      • 方法体中的代码必须遵循自上而下顺序依次逐行执行(亘古不变的语法)
    • java中还有一条语法规则
      • return语句一旦执行,整个方法必须结束(亘古不变的语法)
  • final finally finalize有什么区别

    • final是一个关键字,表示最终的,不变的
      • final修饰的类无法继承,final修饰的方法无法覆盖
    • finally也是一个关键字,和try联合使用,使用在异常处理机制中
      • 在finally语句块中的代码是一定会执行的
    • finalize()是object类中的一个方法,作为方法名出现,所以finalize是标识符
      • finalize()方法是JVM的垃圾回收器负责调用
  • java中怎么自定义异常呢

    • 第一步:编写一个类继承Exception或者RuntimeException
    • 第二步:提供两个构造方法,一个无参数的,一个带有String参数的
  • throws:在方法声明位置上使用,表示上报异常信息给调用者

  • throw:手动抛出异常

标签:java,进阶,try,编译,finally,catch,008,异常
来源: https://blog.csdn.net/m0_46650312/article/details/121362660

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有