JAVA学习资料之异常处理

来源:互联网 发布:御宅同萌邀请码 淘宝 编辑:程序博客网 时间:2024/05/15 14:06

语法try{…}catch(异常类型 变量){…}finally{…}

TRY语句块:测试语句在TRY语句块 中。当所调用的方法内部抛出异常时,不会立刻停止程序(但TRY语句块中,余下的代码不会执行),而会到匹配的CATCH语句块中, 进行异常处理。
另外,必须在TRY语句块中调用声明时带有throws 某个异常类型的方法(书上称之为捕获异常,常出现于处理输入输出的java.io包中,所以有的书把它们放在一块讲)。其实,不管有没有“throws”,都可使用该语句来处理异常,以防止应用程序因出现致命错误而终止(这很有用,你想想当你浏览网页时,浏览器突然崩溃,你有什么感觉?)。只是如果你小心,运行时异常(即未捕获异常)是可以防止的(如:数组下标越界)。而对于有“throws”的方法(即会抛出捕获异常),常常会有意外出现(不是由程序本身造成的,比如网络问题导致传输中止),因而必须使用TRY-CATCH。这样的规定可以提高Java程序的健壮性。

异常类型:必须继承于Exception。使用Exception能捕捉所有类型的异常(多态性);而使用其子类,可以捕捉某个特殊类型的异常。

CATCH语句块:异常处理代码在 CATCH语句块中(可以省略,但是CATCHFINALLY不能同时省略)。如果你并列多用几次CATCH语句,可以检查多种不同的异常。但要注意要捕获异常继承关系和其顺序,比如:try{}catch(Exception e){}catch(IOException e){},由于IOException继承于Exception,所以第二个CATCH是执行不到的,在编译时会有提示。

FINALLY语句块:由 于有的操作是必须做的(比如关闭文件或网络连接),而在TRY语句中,一旦出现异常,余下的代码就不会执行。这时,它们就需要在FINALLY语句块中。 因为不管是否出现异常,FINALLY语句都会在最后执行(当然如果你没有省略它的话)。

捕获异常与未捕获异常:都继承于Exception类。未捕获异常继承于ExceptionRuntimeException类的子类及间接的子类。其它的异常就是捕获异常了。

原创粉丝点击