异常简介
程序的异常:Throwable
严重问题:Error 我们不处理。这种问题一般都是很严重的,比如说内存溢出。
问题:Exception
编译期问题:不是RuntimeException的异常 必须进行处理的,因为你不处理,编译就不能通过。
运行期问题:RuntimeException 这种问题我们也不处理,因为是你的问题,而且这个问题出现肯定是我们的代码不够严谨,需要修正代码的。
异常的代码结构
try {
可能出现问题的代码;
}catch(异常名 变量) {
针对问题的处理;
}finally {
释放资源;
}
在try里面发现问题后,jvm会帮我们生成一个异常对象,然后把这个对象抛出,和catch里面的类进行匹配。
如果该对象是某个类型的,就会执行该catch里面的处理信息。
Exception类中要了解的几个方法:
public String getMessage(): 异常的消息字符串
public String toString(): 返回异常的简单信息描述,包含如下信息:
此对象的类的 name(全路径名)
": "(冒号和一个空格)
调用此对象 getLocalizedMessage()方法的结果 (默认返回的是getMessage()的内容)
printStackTrace() 获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。把信息输出在控制台。
finally语句块的问题:
finally:被finally控制的语句体一定会执行
注意:如果在执行到finally之前jvm退出了,就不能执行了。比如在catch中有System.exit(0);
注意: Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。