牛骨文教育服务平台(让学习变的简单)
博文笔记

java学习:Java 异常处理(二)

创建时间:2018-01-16 投稿人: 杨秋鹏 浏览次数:329

上篇讲了java的 异常处理:

捕获异常

多重捕获块

throws/throw 关键字

现继续前缘,让我们共同了解Java 异常处理吧。

java学习:Java 异常处理(二)

finally关键字

finally 关键字用来创建在 try 代码块后面执行的代码块。

无论是否发生异常,finally 代码块中的代码总会被执行。

在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。

finally 代码块出现在 catch 代码块最后,语法如下:

java学习:Java 异常处理(二)

实例

java学习:Java 异常处理(二)

以上实例编译运行结果如下:

java学习:Java 异常处理(二)

注意下面事项:

  • catch 不能独立于 try 存在。

  • 在 try/catch 后面添加 finally 块并非强制性要求的。

  • try 代码后不能既没 catch 块也没 finally 块。

  • try, catch, finally 块之间不能添加任何代码。


声明自定义异常

在 Java 中你可以自定义异常。编写自己的异常类时需要记住下面的几点。

  • 所有异常都必须是 Throwable 的子类。

  • 如果希望写一个检查性异常类,则需要继承 Exception 类。

  • 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

可以像下面这样定义自己的异常类:

java学习:Java 异常处理(二)

只继承Exception 类来创建的异常类是检查性异常类。

下面的 InsufficientFundsException 类是用户定义的异常类,它继承自 Exception。

一个异常类和其它任何类一样,包含有变量和方法。

实例

以下实例是一个银行账户的模拟,通过银行卡的号码完成识别,可以进行存钱和取钱的操作。

java学习:Java 异常处理(二)

为了展示如何使用我们自定义的异常类,

在下面的 CheckingAccount 类中包含一个 withdraw() 方法抛出一个 InsufficientFundsException 异常。

java学习:Java 异常处理(二)

java学习:Java 异常处理(二)

下面的 BankDemo 程序示范了如何调用 CheckingAccount 类的 deposit() 和 withdraw() 方法。

java学习:Java 异常处理(二)

编译上面三个文件,并运行程序 BankDemo,得到结果如下所示:

java学习:Java 异常处理(二)

通用异常

在Java中定义了两种类型的异常和错误。

  • JVM(Java虚拟机) 异常:由 JVM 抛出的异常或错误。例如:NullPointerException 类,ArrayIndexOutOfBoundsException 类,ClassCastException 类。

  • 程序级异常:由程序或者API程序抛出的异常。例如 IllegalArgumentException 类,IllegalStateException 类。

本文完!

java学习:Java 异常处理(二)

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。