Java异常处理

异常(Exception)的概念

异常处理

自定义异常

一、Exception 的概念

Exception 是在程序运行时打断正常程序流程的异常的情况

  • 试图打开的文件不存在

  • 网络链接中断

  • 操作符越界

  • 要加载类文件不存在

Java中定义了各种异常。Java.lang.Throwable 是这些类的父类。

  • Error:很难恢复的严重错误,一般不由程序处理。

  • RuntimeException:程序设计或实现上的问题,如数组越界等。

  • 其它异常:通常是由环境因素引起的,并且可以被处理的。如文件不存在,无效URL等。

二、异常处理

  • 扑获并处理异常

  • 将方法中产生的异常抛出

1、扑获与处理异常

•Try 语句块

• catch 语句块

• finally 语句块

(1)Try语句块

一般形式:

try {

//一条或多条可能产生异常的java语句

Java statements

}

try 语句后必须跟随至少一个catch或finally语句块。

(2)Catch语句块

Catch语句块提供错误处理。

• SomeThrowableObject:能够被处理的异常类名,必须是Throwable类的子类

• variableName: 是异常处理程序中能够引用的代表被扑获异常的变量名称。

• Java statements: 当扑获到例外时执行的Java语句。

(3)Finally语句块

将先前方法的状态清除,并可以将控制转移到程序的其他地方。

finally 语句块无论是否发生异常都要执行。

(4)异常处理——Try ,catch和finally 语句

public void writeList() {
    PrintWriter out = null;
    try {
        System.out.println("Entering try statement");
        out = new PrintWriter(  new FileWriter("OutFile.txt"));
        for (int i = 0; i < size; i++)
            out.println("Value at: " + i + " = " + victor.elementAt(i));
    } catch (ArrayIndexOutOfBoundsException e) {
        System.err.println("Caught ArrayIndexOutOfBoundsException: " +
    e.getMessage());
    } catch (IOException e) {
        System.err.println("Caught IOException: " + e.getMessage());
    } finally {
        if (out != null) {
            System.out.println("Closing PrintWriter");
            out.close();
        } else {
            System.out.println("PrintWriter not open");
        }    }}  

(5)try-with-resources语句

  • Java SE 7以后的版本,允许在try()的括号中声明一个或多个资源(resource)对象。资源对象是指在try catch程序完成后,必须关闭的对象

  • 确保在try catch语句结束时,自动关闭在try() 中声明的在 try-catch 语句块中使用的资源

  • 所有实现了java.lang.AutoCloseable接口或其子接口java.io.Closeable的所有对象,可作为资源对象

  • try-with-resources语句也可以有catch和finally代码块,并且在所有资源对象被关闭后执行

  • Java SE 9允许已定义final 或等效于 final的资源变量,在 try-with-resources 的try( )语句中直接使用。等效于final的变量,是指声明时不带有final关键字,并且只被赋值一次的变量

多种异常的同时处理:

异常处理可以针对这个体系中的任意一个类。

•叶结点:是具体、专用的异常处理;

•中间结点:是通用的异常处理。可以处理该结点及其子类类型的异常。

2、异常处理——抛出异常

可能产生异常的方法表明将不处理该异常,而该异常将被抛到调用该方法的程序。

例:public void troublesome( ) throws IOException{

…..

}

如果一个异常在返回到main()时还未被处理,则程序将非正常终止。

抛出异常的throw语句:

throw someThrowableObject

三、自定义异常

定义异常类,是Exception类的子类,可包含普通类的内容。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值