java中Exception总结

前言:异常有 Throwable,Error和Exception,可参考此链接:点击打开链接

1.为什么要有Exception?

在下面的方法总,如果没有捕获异常,将导致异常直接抛给main方法处理。导致虚拟机直接kill该线程。在实际应用中导致闪退现象!


2.处理异常的方法分为两中。

(1)通过try{}catch(){}来捕获异常。

(2)通过throws来抛出异常。


.通过try{}catch(){}来捕获异常,try{}用来表示运行时可能会出现异常,catch(){}用来表示遇到异常时的处理方式以及声明处理异常的类型。

增加异常捕获后,业务还可以继续向下运行。



运行顺序:

try语句块中的方法-->如果运行时出现异常-->catch块,此时try块中剩余的代码逻辑将不再执。


3.在实际应用中,通常指定捕获具体的类型,但是有些类型我们也无法预料!此时我们通常在最后增加捕获Exception



注意:父类异常后抛出

4.虽然Java在程序结束时自动关闭所有打开的流,但是当使用完毕时,显示的关闭所有打开的留仍时一个好习惯。一个打开的留有可能会用尽系统资源,如果没有将打开的留关闭,当另一个程序试图打开另一个留时,可能会得不到需要的资源。为了保证流成功关闭,可将流关闭操作放入finally{}中。


通过throws抛出异常的原因:

1.程序执行错误,但是该异常不应该由当前代码处理,应该抛出给调用方处理。

2.遇到满足语法规定但是与业务逻辑不符。

目的:

当别的方法调用时,知道该方法可能会出现异常,当出现异常时,调用方对异常进行处理。


5.throw和throws

通常一个方法使用throw抛出什么异常,方法上应该使用throws定义该异常抛出以告知调用这需要处理的异常。但是,如果为非检查异常RuntimeException及其子类时,则不需要。


6.当重写父类中含有异常的方法时,应遵守以下规则

(1).不抛任何异常

(2).抛出部分异常

(3).抛子类异常

(4).不可抛出父类异常

(5).不抛出额外异常(没有继承关系)


7.获取异常信息的方法

e.printStackTrace();获取堆栈信息

e.getMessage();获取错误信息

e.getCause();获取异常原因




Java,异常(Exception)是指在程序执行过程出现的意外情况或错误。Java的异常分为两种主要类型:受检异常(checked exceptions)和非受检异常(unchecked exceptions)。 1. 受检异常(Checked Exceptions): 受检异常是指在代码必须显式处理的异常,即在方法签名的throws子句声明或使用try-catch语句进行捕获和处理。受检异常一般表示外部环境或资源的错误或不可用性,以及需要调用者进行处理或决策的其他条件。例如,IOException、SQLException等都是受检异常。如果一个方法抛出受检异常,调用者必须在代码显式地处理该异常。 2. 非受检异常(Unchecked Exceptions): 非受检异常是指不需要在方法签名声明或捕获的异常,也就是说,编译器不会强制要求处理这类异常。非受检异常通常表示程序内部逻辑错误或运行时错误,例如NullPointerException、ArrayIndexOutOfBoundsException等。这些异常通常是由程序员编写的代码错误引起的,需要通过调试和修复代码来解决。 此外,还有一个特殊类型的非受检异常,即错误(Error)。错误表示JVM或系统级别的严重问题,例如内存溢出(OutOfMemoryError)或栈溢出(StackOverflowError)。与普通的非受检异常不同,错误一般不应该被捕获或处理,而是应该由虚拟机来处理。 总结Java的异常可以分为受检异常和非受检异常。受检异常需要在代码显式处理,而非受检异常不需要。受检异常通常表示外部环境或资源的错误或不可用性,而非受检异常通常表示程序内部逻辑错误或运行时错误。同时,还有一种特殊的非受检异常,即错误,表示JVM或系统级别的严重问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值