Java异常到底是什么?

什么是异常

正如文档开头所说,世界上并没有完美的程序,程序在运行中可能会存在着异常状态,这种异常状态,可能是异常(Exception),也可能是错误(Error),一个健壮性的程序就要考虑程序可能存在的异常状态,并对其进行处理。Throwable类是Java中所有错误和异常的超类,位于java.lang包,从JDK1.0开始引入。Throwable有两个子类Exception(Java中所有异常类的父类)和Error(Java中所有错误类的父类)。

在这里插入图片描述
错误往往是程序运行时发生,程序员不可控制,对程序造成不可逆转的影响,比如Java中OutOfMemoryError,内存溢出,导致程序宕机,错误在代码中通常被忽略,它们在编译也检查不到的,当然好的编程习惯合理运用各种数据结构,提升代码质量等等会减少OOM的发生率。

异常会在编译或者运行时被发现,需要程序员去处理一部分异常,捕获异常,并合理的处理能保证程序的健壮性,让程序继续往下执行,不至于某个部分异常影响到整个应用,因此Java中异常类(Exception)是需要重点去学习关注的,下面所说的异常也都指Exception及其子类出现的异常

受检异常(CheckedException)

一般由外部错误引起,发生在编译阶段,Java编译器会强制捕获这类异常,要求使用try catch捕获。
如果期望调用者能够适当的恢复,应该使用受检异常。
运行时异常(RuntimeException)
在Java虚拟机运行期间抛出的异常,出现运行时异常,通常都是程序员的错误导致的。//加入Java开发交流君样:756584822一起吹水聊天
使用运行时异常表示编程错误,不应该也不需要捕获运行时异常。

常见异常

Java中内置了一些异常类来描述程序可能出现的受检异常和运行时异常。

运行时异常

在这里插入图片描述
在这里插入图片描述

异常处理

程序产生的运行时异常往往是程序员的错误导致的,不应该去捕获运行时异常,受检异常需要我们去处理,保证程序的健壮性。Effecive Java中对于异常的处理通常有下面几种原则:

  • 异常应该只用于异常情况下,不应该用作流程控制

  • 对可恢复的情况使用受检异常,对编程错误使用运行时异常

  • 避免不必要的使用受检异常

  • 优先使用标准异常

  • 努力使失败保持原子性,失败的方法调用应该保持对象在调用之前的状态

  • 不要忽略异常
    image

最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君样:756584822

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值