Java中处理异常的两大步:捕获异常和声明异常。
使用try...catch捕获异常:try块后可以有多个catch块
如果catch两个异常,一个子类一个父类,子类异常在前父类异常在后。
无论是否发生异常,都必须执行finally中的语句。finally中一般放数据库的关闭、IO流的关闭、socket连接的关闭等物理连接的关闭。
Java中的非正常情况分为两种:异常(exception)和错误(error)。exception和error都继承自throwable。
异常:(1)可以捕获,可以是可控制的也可以是不可控的。(2)表示一个由程序员导致的错误。(3)应该在应用程序级被处理。
错误:(1)不可控制的。(2)用于表示系统错误和低层资源的错误。(3)如果可能的话,应该在系统级被捕捉。
访问异常信息:
getMessage():返回详细描述异常的字符串。
printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。
printStackTrace(printStream s):将该异常的跟踪栈信息输出到指定输出流中。
getStrackTrace():返回该异常的跟踪栈信息。
使用throw声明抛出异常:当前方法不知道如果处理该异常,该异常应该由上一级调用者处理,使用throw声明抛出异常,交给JVM处理。JVM处理的方法是:打印异常的跟踪栈信息,并终止程序执行。
方法重写时,子类异常声明不能超出父类的范围。