常常在Java程序中,看到抛出异常、捕获异常,或者写代码提示错误而不捕获异常,给自己带来很大的困扰,所以整理一下异常相关知识。
Java库和开源代码往往会将一个异常包装成另一个异常。这样记录和印刷根部异常很重要。Java异常类提供了getCause()方法以获取异常原因,并提供了关于异常发生的根本原因的更多信息。这种实践对调试或排除故障有很大帮助。记住,当将一个异常包装成另一个异常时,需要将源头异常传递给新的异常结构器。
出现异常的情况
在讨论异常的情况下,首先哪些情况下可能发生异常。根据个人理解,大致情况如下
1.代码或调用的代码(如共享库)有错误;
2.不可用操作系统资源;
3.运行库遇到阻碍(无法接收验证代码);
4.数组下标越界,内存溢出;
上述只是做一个简单的讲解,关于异常的情况其实还挺多的,就不详细的逐一讲解了。
异常处理的基本框架
Java中Throwable
所有的异常都是Java中的对象,是Throwable类或其它子类的一个实列。
Throwable类有两个标准子类。
1.error(错误类):error类一般与虚拟机有关,如系统崩溃、虚拟机错误等。这种错误无法恢复或捕获,应用程序会崩溃
2.Exception(异常类):指可捕捉和恢复的异常,如ArrayIndexOutOfBoundsexception(数组下标跨境异常)、IOException(输入/输出异常)等。
异常抛出和异常捕获
Java中的异常处理通过try、catch、throw、throws和finally实现了5个关键词。通常try、catch、finally一起使用,另外两个异常也一起使用。
1.异常抛出。
异常抛出需要通过throws重点指定可抛出的异常,然后使用throw抛出异常。
2.异常捕获处理。
异常用try包裹可能出现异常的代码块,用catch处理错误,或者最后用finally处理。
定制异常
Java类库提供了丰富的异常处理机制,可以满足大部分异常情况,但在少数情况下,需要定制异常,以满足特定需求。
自定义异常是非常简单的,可以通过自定义异常类来继承和扩展它们。
一个好的程序员的Java培训分享一些Java异常处理的小知识。如果Java方法不能按照正常流程执行,可以通过另一种方法退出,退出包装错误消息的对象,这是Java的例外。