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

Java基础知识异常

异常

Java 异常类层次结构图概览

 Exception 和 Error 有什么区别?

在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类:

  • Exception :程序本身可以处理的异常,可以通过 catch 来进行捕获。Exception 又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Exception (不受检查异常,可以不处理)。
  • ErrorError 属于程序无法处理的错误 ,我们没办法通过 catch 来进行捕获不建议通过catch捕获 。例如 Java 虚拟机运行错误(Virtual MachineError)、虚拟机内存不够错误(OutOfMemoryError)、类定义错误(NoClassDefFoundError)等 。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止

Checked Exception 和Unchecked Exception 有什么别?

Checked Exception 即 受检查异常 ,Java 代码在编译过程中,如果受检查异常没有被 catch或者throws 关键字处理的话,就没办法通过编译。

比如下面这段 IO 操作的代码:

 除了RuntimeException及其子类以外,其他的Exception类及其子类都属于受检查异常 。常见的受检查异常有:IO 相关的异常、ClassNotFoundExceptionSQLException...

 

Unchecked Exception不受检查异常 ,Java 代码在编译过程中 ,我们即使不处理不受检查异常也可以正常通过编译。

RuntimeException 及其子类都统称为非受检查异常,常见的有(建议记下来,日常开发中会经常用到):

  • NullPointerException(空指针错误)
  • IllegalArgumentException(参数错误比如方法入参类型错误)
  • NumberFormatException(字符串转换为数字格式错误,IllegalArgumentException的子类)
  • ArrayIndexOutOfBoundsException(数组越界错误)
  • ClassCastException(类型转换错误)
  • ArithmeticException(算术错误)
  • SecurityException (安全错误比如权限不够)
  • UnsupportedOperationException(不支持的操作错误比如重复创建同一用户)
  • ……

 Throwable 类常用方法有哪些?

  • String getMessage(): 返回异常发生时的详细信息
  • String toString(): 返回异常发生时的简要描述
  • String getLocalizedMessage(): 返回异常对象的本地化信息。使用 Throwable 的子类覆盖这个方法,可以生成本地化信息。如果子类没有覆盖该方法,则该方法返回的信息与 getMessage()返回的结果相同
  • void printStackTrace(): 在控制台上打印 Throwable 对象封装的异常信息

 


http://www.mrgr.cn/news/58944.html

相关文章:

  • 【Unity 安装教程】
  • 格姗知识圈博客网站开源了!
  • 享元设计模式在Java坦克游戏中的应用
  • AIGC底层技术揭秘
  • 什么是域名?什么是泛域名?
  • 【小白学机器学习17】 概率论的认识论和方法论
  • python学习笔记:___getattr__
  • 鸿蒙开发初级证书考试答案
  • Uni-App-01
  • 架构师备考专栏-导航页
  • C语言输入输出效率优化
  • layui表格反选功能
  • uniapp:上拉加载更多、下拉刷新、页面滚动到指定位置
  • 力扣33:搜索旋转排序数组
  • 从Docker容器中备份整个PostgreSQL
  • 软考系统分析师知识点二三:错题集1-10
  • 并联谐振回路
  • 无人机原理是什么?
  • Linux下的线程同步与死锁避免
  • 从0到1构建 UniApp + Vue3 + TypeScript 移动端跨平台开源脚手架
  • 第15课 算法(上)
  • 快速入门!低功耗4G模组跟服务器之间的加密通信,千万不能错过!
  • 计算机强校99+分《数据库》课设
  • Web开发者必看:TypeScript的进阶用法与最佳实践
  • 动态规划 —— 0-1背包问题
  • vue开发的时候,目录名、文件名、函数名、变量名、数据库字段等命名规范