异常概述
异常处理------基本概念
当出现程序无法控制的外部环境问题(用户提供文件不存在,文件内容损坏,网络不可用……)时,Java中2种异常处理异常
00.在方式异常处理异常
01.将异常抛给调用者,让调用者处理
异常分类
00.检查性异常:java.lang.Exception.
01.运行期异常:java.lang.RuntimeException.
02.错误java.lang.Error.
顶层是java.lang.Throwable类。检查性异常,
运行期异常.错误都是这个类的子孙类,java.lang.Exception和java.lang.Error继承自java.lang.Exception.
检查性异常:
程序正确,但因为外界在的环境条件不足引发,例如:用户错误及i/o问题——程序试图打开一个并不存在的远程socket端口或者是打开不存在的文件时,这不是程序本身的错误,而很可能是远程机器名字错误(用户拼音写错误)对商用软件系统,程序开发者必须考虑并处理这个问题,Java编译器强制要求处理这个类异常,如果不捕获这个异常,程序将不能被编译。
运行期异常:
意味着程序在bug,如数组越界,被除,入参不满足规范……这类异常需要更改程序被避免,java编译器强制要求处理这类异常。
错误:一般很少见,也很难通过程序解决,它可能源于程序的bug,但一般更可能源于环境问题.如内存内存消耗殆尽,错误在程序中无需处理,而由运行环境来处理。
try……catch:
00.程序运行产生异常时,将从异常发生点中断程序并向外抛出异常信息。
01.将异常抛给调用者,让调用者处理异常。
异常处理:
finally
如果把finally块置try……catch语句后,finally块一般都会得到执行,它相当于一个万能的保险箱,即使前面的try块发生异常,而又没有对应异常的catch块,finally块将马上执行。
以下情形,finally块不会被执行!
00.finally块中发生了异常
01.程序所在的线程死亡,
02.在前面的代码块中用了System.exit();
03.关闭cup。
java异常处理机制:
保证程序出现异常情况以后,能继续执行后续代码!