异常的基本概念:
异常:指所有可能造成计算机无法正常处理的情况
异常处理:是一种特定的程序错误处理机制,它提供了一种标准的方法,用以处理错误,发现可预知及不可预知的情况,及允许开发者识别,查出和修改错漏之处。
Java里有两个异常类-Error和Exception。
Error通常指java虚拟机(JVM)出错,用户在程序里无法处理这种错误
Exception包含一般性的异常,这些异常通常在在捕捉到后可以有效处理,确保程序的正常运行。
处理错误的方法有以下几个特点:
- 不需要打乱原有的程序设计结构,如果没有任何错误产生,那么程序的运行不收影响
- 不依靠方法的返回值,来报告错误是否产生
- 采用集中的方式处理错误,能够根据错误种类的不同进行对应的错误处理操作。
Java里的几个常见异常
- 算数异常(ArithmeticException):当出现不符合算数运算逻辑的情况就会出现(例如除以0)。
- 空指针异常(NullPointerException);没有给对象开辟内存空间却使用该对象时会出现空指针异常。
- 文件未找到异常(FileNotFoundException):当程序试图打开一个不存在文件进行读写操作时,将会引发该异常。经常是由于文件名读错,或者所需要存储的磁盘,CD-ROM等被移走,没有放入等原因造成的。
- 数组下标越界异常(ArrayIndexOutOfBoundsException):对于一个给定大小的数组,如果数组的索引超过上限或者低于下限都会造成越界。
- 内存不足异常(OutOfMemoryException):当可用内存不足以让Java虚拟机分配一个对象时抛出该错误
Java通过面向对象的方法来处理异常,即在一个方法的运行过程中,如果发生了异常,这个方法就会生成一个代表该异常的一个对象,并把它交给运行时系统(Runtime System),系统再寻找一段合适的代码来处理异常。
异常的抛出(throw);生成异常对象并把它交给运行时系统的过程。
异常的捕获(catch):运行时系统在方法的调用栈中查找,并把生成异常的方法开始进行回溯,直到找到包含相应异常处理的方法为止。
异常处理
异常处理是由try,catch,finally等三个关键字组成的程序块。
其语法如下:
try{
要检查的语句;
}
catch(异常类 对象名称){
异常发生的处理语句;
}
catch(异常类 对象名称){
异常发生的处理语句;
}
......
finally{
一定会运行到的代码;
}
异常处理的流程:
抛出异常throws和throw,其中throw可以抛出异常类的实例化对象。
在处理异常时,try...catch...finally和throws,throw经常联合使用。