当前位置: 首页 > news >正文

2. Java 异常体系

2.1 Throwable

java.lang.Throwable 类是 Java 程序执行过程中发生的异常事件对应的类的根父类。

Throwable 中的常用方法:

  • public void printStackTrace()打印异常的详细信息。

    包含了异常的类型、异常的原因、异常出现的位置、在开发和调试阶段都得使用 printStackTrace。

  • public String getMessage():获取发生异常的原因。

2.2 Error 和 Exception

Throwable 可分为两类:Error Exception。分别对应着 java.lang.Error 与 java.lang.Exception 两个类。

**Error:**Java 虚拟机无法解决的严重问题。如:JVM 系统内部错误、资源耗尽等严重情况。一般不编写针对性的代码进行处理。

  • 例如:StackOverflowError(栈内存溢出)和 OutOfMemoryError(堆内存溢出,简称 OOM)。

Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,需要使用针对性的代码进行处理,使程序继续运行。否则一旦发生异常,程序也会挂掉。例如:

  • 空指针访问
  • 试图读取不存在的文件
  • 网络连接中断
  • 数组角标越界

说明:

  1. 无论是 Error 还是 Exception,还有很多子类,异常的类型非常丰富。当代码运行出现异常时,特别是我们不熟悉的异常时,不要紧张,把异常的简单类名,拷贝到 API 中去查去认识它即可。
  2. 我们本章讲的异常处理,其实针对的就是 Exception。

2.3 编译时异常和运行时异常

Java 程序的执行分为编译时过程和运行时过程。有的错误只有在运行时才会发生。比如:除数为 0,数组下标越界等。

因此,根据异常可能出现的阶段,可以将异常分为:

  • 编译时期异常(即 checked 异常、受检异常):在代码编译阶段,编译器就能明确警示当前代码可能发生(不是一定发生)xx 异常,并明确督程序员提前编写处理它的代码。如果程序员没有编写对应的异常处理代码,则编译器就会直接判定编译失败,从而不能生成字节码文件。通常,这类异常的发生不是由程序员的代码引起的,或者不是靠加简单判断就可以避免的,例如:FileNotFoundException(文件找不到异常)
  • 运行时期异常(即 runtime 异常、unchecked 异常、非受检异常):在代码编译阶段,编译器完全不做任何检查,无论该异常是否会发生,编译器都不给出任何提示。只有等代码运行起来并确实发生了 xx 异常,它才能被发现。通常,这类异常是由程序员的代码编写不当引起的,只要稍加判断,或者细心检查就可以避免。
    • java.lang.RuntimeException 类及它的子类都是运行时异常。比如:ArrayIndexOutOfBoundsException 数组下标越界异常,ClassCastException 类型转换异常。

http://www.lryc.cn/news/64538.html

相关文章:

  • 如何学好STM32,需要哪些步骤?
  • 武忠祥老师每日一题||不定积分基础训练(四)
  • 记一次产线打印json导致的redis连接超时
  • FPGA入门系列12--RAM的使用
  • 【三十天精通Vue 3】第二十六天 Vue3 与 TypeScript 最佳实践
  • ffmpeg-mov-metadate不识别Bug修复
  • (8)(8.6) 引导程序更新
  • 汽车电路图、原理框图、线束图、元器件布置图的识读技巧与要点
  • ( 数组和矩阵) 667. 优美的排列 II ——【Leetcode每日一题】
  • 【python基础语法七】python内置函数和内置模块
  • 81. read readline readlines 读取文件的三种方法
  • 【社区图书馆】【图书活动第四期】
  • webpack学习指南(上)
  • 刷题记录˃ʍ˂
  • Word2vec原理+实战学习笔记(二)
  • 什么是Java的多线程?
  • “use strict“是什么? 使用它有什么优缺点?
  • 【C++】C++11常用特性总结
  • 泛型——List 优于数组
  • JavaScript中对象的定义、引用和复制
  • JavaScript通过函数异常处理来输入圆的半径,输出圆的面积的代码
  • Ubuntu 安装 Mysql
  • 【五一创作】【Midjourney】Midjourney 连续性人物创作 ② ( 获取大图和 Seed 随机种子 | 通过 seed 随机种子生成类似图像 )
  • 分布式事务 --- Seata事务模式、高可用
  • SQL(基础)
  • 「OceanBase 4.1 体验」OceanBase 4.1社区版的部署及使用体验
  • 计算机操作系统实验:银行家算法模拟
  • 机器学习:多项式拟合分析中国温度变化与温室气体排放量的时序数据
  • 一个 24 通道 100Msps 逻辑分析仪
  • 使用Process Explorer和Dependency Walker排查C++程序中dll库动态加载失败问题