JAVA 异常 基本知识

异常

异常定义

异常是运行过程中出现的错误

  • 人为错误:填写错误等
  • 随机错误:网络中断、内存耗尽等

一个健壮的程序必须处理各种各样的错误

Java的异常是class

  • Object
  • Throwable
    • Error
    • OutOfMemoryError
    • Exception
    • RuntimeException
      • NullPoiterException
      • IllegalArgumentException
    • IOException
  • 继承关系图
    JAVA 异常 基本知识

捕获要求

  • Error 及其子类,RuntimeException及其子类不需要捕获
  • Exception及其子类,不包括RuntimeException及其子类
    必须捕获

异常捕获

try、catch、finally

  • try中一般放置可能发生异常的语句
  • catch 捕获异常
  • 多catch则按顺序匹配
    • 匹配到了则不再继续匹配
  • 可以捕获子类异常
  • 一个catch可以捕获多个异常,用”|”合并到一起
  • finally
  • 不论是否发生异常都会执行的代码
  • 不是必须的
  • 总是最后执行

抛出异常

异常的传播

  • 追踪
  • printStackTrace()方法可以打印出调用堆栈

异常的转换

  • 抛出过程中转换了异常类型
  • 用旧异常构建了一个新异常然后抛出
    printStackTrace的时候 关键字为Caused by

try、catch、filnally

  • 一般正常情况,再try中抛出异常,catch捕获异常,final运行保底代码
  • 如果catch中抛出的异常,会在final运行完毕后抛出
  • 异常屏蔽,如果final也抛出异常,将会屏蔽掉catch中的异常
  • 解决方法,使用Trrowable的
    addSupressed()方法。保留被屏蔽的异常信息。
    在捕获处是同getSuppressed()方法获取被屏蔽的异常信息
    printStackTrace的时候 关键字为Suppressed

NullPointerException

最常见的异常

空指针异常

由JVM抛出

如果一个对象为null,调用其方法或访问其字段就会产生

一般避免返回null

  • 字符串使用””,而不是null
  • 数组返回空数组,而不是null

如果调用方一定要根据null判断,比如返回null表示文件不存在,那么考虑返回Optional

JAVA 异常 基本知识

从Java 14开始,如果产生了NullPointerException,JVM可以给出详细的信息告诉我们null对象到底是谁。

JAVA 异常 基本知识

小结

自定义异常

在一个大型项目中,可以自定义新的异常类型,但是,保持一个合理的异常继承体系是非常重要的。

一个常见的做法是自定义一个BaseException作为”根异常”,然后,派生出各种业务类型的异常。

完整思维导图

JAVA 异常 基本知识

参考

www.liaoxuefeng.com

Original: https://www.cnblogs.com/lyphy/p/16290265.html
Author: Lyphy
Title: JAVA 异常 基本知识

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/593089/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Oracle 查看哪个表被锁定,并获取对应的sessionID

    SELECT A.OWNER,A.OBJECT_NAME,B.XIDUSN,B.XIDSLOT,B.XIDSQN,B.SESSION_ID,B.ORACLE_USERNAME,B….

    Java 2023年5月30日
    083
  • 类AudioTrack的函数getMinFrameCount(java侧为getMinBufferSize)

    以前看这个函数的时候,对min frame是如何计算得来的,并不是很了解。 今天又看了看,终于有点头绪了。 status_t AudioTrack::getMinFrameCoun…

    Java 2023年5月29日
    082
  • java实现空心金字塔

    前言 最近在学习java,遇到了一个经典打印题目,空心金字塔,初学者记录,根据网上教程,有一句话感觉很好,就是先把麻烦的问题转换成很多的简单问题,最后一一解决就可以了,然后先死后活…

    Java 2023年6月13日
    0108
  • Halo 开源项目学习(二):实体类与数据表

    基本介绍 Halo 项目中定义了一些实体类,用于存储博客中的关键数据,如用户信息、文章信息等。在深入学习 Halo 的设计理念与实现过程之前,不妨先学习一下一个完整的博客系统都由哪…

    Java 2023年6月9日
    093
  • java 线程池 Executors,ExecutorService

    1,线程池对象 1,Executors 工厂类 方法 newFixedThreadPool(int num),创建固定个数线程池,num 代表线程个数 方法 newCachedTh…

    Java 2023年5月29日
    085
  • Storm4

    1 package storm.scheduler; 2 3 import java.lang.management.ManagementFactory; 4 import jav…

    Java 2023年6月9日
    065
  • MyBatis数据输入,总体机制的概括

    My Batis数据输入 1 .1 M ybatis 总体机制概括 1.2 概念说明 注意:这里的简单类型不是指的基本数据类型。 1.3 单个简单类型参数 1.3 . 1 M ap…

    Java 2023年6月16日
    079
  • JAVA入门基础_从零开始的培训_MYSQL高级

    第1章 Linux下MySQL的安装与使用 Linux下MYSQL的卸载 安装MYSQL之前的准备步骤 正式安装 检查/tmp临时目录权限 安装前检查依赖并卸载mariadb 按照…

    Java 2023年6月9日
    061
  • Git SSH访问+多帐号

    Git SSH访问+多帐号 本篇说一下 Git 通过 ssh 访问 以及配置 多个公钥,因为一些墙化软件原因,导致用Http访问Github总是会卡死,最后发现ssh 访问可以 1…

    Java 2023年6月9日
    097
  • 宝塔nginx无法安装wordfence怎么解决?使用chattr i命令

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/ytkah/p/15543431.htmlAuthor:…

    Java 2023年5月30日
    081
  • MySQL的Explain总结

    Explain简介 MySQL优化器在基于成本的计算和基于规则的SQL优化会生成一个所谓的 执行计划,我们就可以使用执行计划查看MySQL对该语句具体的执行方式。 介绍这个好啰嗦就…

    Java 2023年6月16日
    067
  • Android Swtich开关样式调整

    原文:Android Swtich开关样式调整 – Stars-One的杂货小窝 接入百度人脸的demo时候,发现了内置的switch开关比较好看,看了下实现方法,原来…

    Java 2023年6月13日
    079
  • CSS 网页字体最佳实践

    一般在网页的字体设置中,可以将字体分类三类: 系统字体:使用系统自带的字体 兜底字体:当系统字体无法正常使用,而兜底的字体 Emoji 字体:显示网页中的表情字体 为了满足不同平台…

    Java 2023年6月8日
    096
  • Home Assistant接入HomeKit与简要介绍

    在HomeAssistant中接入HomeKit后可以使用iPad或iPhone的家庭App控制已接入HA的设备,如HA接入了很多小米智能家居设备,HA接入HomeKit后就可以使…

    Java 2023年6月16日
    095
  • HTML相关知识入门

    HTML 注意点 html是不区分大小写的 建议包括嵌套,不要交叉嵌套 文件后缀名可以是 .html或 .htm 格式 标题 标签 <h1></h1>标题 …

    Java 2023年6月6日
    066
  • Docker 安装 ElasticSearch 及失败解决方法[Ubuntu 20.04]

    1. 下载 ElasticSearch 最开始使用 docker search命令搜索后,就直接使用 docker pull命令拉取镜像,但没想到拉取失败,后来到官网看了看,原来没…

    Java 2023年6月5日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球