异常处理
异常的简单了解
什么是异常?
指的是程序在执行过程中,出现的非正常情况,如果不处理最终会导致JVM的非正常停止。
异常的抛出机制
Java中把不同的异常用不同的类表示,一旦发生某种异常,就‘创建该异常类型的对象’,并且抛出(throw)。然后程序员如果没有捕捉(catch)这个异常对象,那么这个异常对象将会导致程序终止。
如何对待异常
对于程序出现的异常,一般有两种解决,一是遇到错误就终止程序的运行。另一种方法是程序员在编写程序时,就充分考虑到各种可能发生的异常和错误,极力预防和避免。实在无法避免的,要编写相应的代码进行异常的检测、以及‘异常的处理’,保证代码的‘健壮性’
如何处理异常
异常的体系结构
Throwable继承于object类
java.lang.Throwable类时java程序执行过程中发生的异常事件对应的类的根父类。
Throwable中的常用的方法
- public void printStackTrace():打印异常的详细信息。
包含了异常的类型、异常的原因、异常出现的位置、在开发和调试阶段都得使用的printStackTrace
- public String getMessage():获取发生异常的原因。
Error和Exception
Throwable可以分为两类:Error和Exception。分别对应着java.lang.Error和java.lang.Exception两个类。
Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。一般不编写针对性的代码进行处理。
- 例如:StackOver flowError(栈内存溢出)和Ou
编译时异常和运行时异常
- 编译时期异常(即checked异常、受检异常):在代码编译阶段,编译器就能明确警示当前代码可能发生(不是一定发生)的XX异常,并明确督促程序员提前编写处理他的代码。如果程序员没有编写对应的异常处理代码,则编译器就会直接判定编译失败,从而不能生成字节码文件。通常,这类异常的发生不是由程序员的代码引起的,或者不是靠加简单判断就可以避免的,例如:FilNotFoundException(文件找不到异常)。
- 运行时期异常(即runtime异常)