Java 常见异常的处理、捕捉和解释

捕捉异常

语法如下:

try{
	//程序代码块
}
catch(Exception1 e){
	//对 Exception1 的处理
}
catch(Exception2 e){
	//对 Exception2 的处理
}
...
[finally{
	//程序块
}]

通常,异常处理常用一下3个函数来获取异常的有关信息。

  • getMessage()函数:输出错误性质。
  • toString()函数:给出异常的类型与性质。
  • printStacktrace()函数:指出异常的类型、性质、栈层次及出现在程序中的位置。

final 语句块

完整的异常处理语句一定要包含 finally 语句,无论程序中有无异常发生,并且无论之间的 try-catch是否顺利执行完毕,都会执行 finally 语句。
在以下 4 种特殊情况下,finally 块不会被执行:

  • 在 finally 语句块中发生了异常。
  • 在前面的代码中使用了 System.exit() 退出程序。
  • 程序所在的线程死亡。
  • 关闭 CPU。

常见异常

异常类说明
ClassCastException类型转换异常
ClassNotFoundException未找到相应类异常
ArithmeticException算术异常
ArrayIndexOutBoundsException数组下标越界异常
ArrayStoreException数组中包含不兼容的值抛出的异常
SQLException操作数据库异常
NullPointerException空指针异常
NoSuchFieldException字段未找到异常
NoSuchMethodException方法找到抛出的异常
NumberFormatException字符串转换为数字抛出的异常
NegativeArraySizeException数组元素个数为负数抛出的异常
IOException输入输出异常
IllegalAccessExption不允许访问某类异常
InstantiationException当应用程序试图使用 Class 类中的 newinstance() 方法船舰一个类的实例,而指定的类对象无法被实例化,抛出该异常
EOFException文件已结束异常
FileNotFoundException文件未找到异常

自定义异常

使用 Java 内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户只需要继承 Exception 类即可自定义异常类。
在程序中使用自定义异常类,大体可分为以下几个步骤:
(1)创建自定义异常类,super(ErrorMessage)调用父类构造方法。
(2)在方法中通过 throw 关键字抛出异常。
(3)如果在当前抛出异常的方法中处理异常,可以使用 try-catch 语句块捕获并处理,否则在方法的声明处通过 throws 关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
(4)再出现异常方法的调用者中捕获并处理异常。

在方法中抛出异常

throws 关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以用逗号隔开。
如果是 Error、RuntimeException 或他们的子类,可以不使用 throws 关键字来声明要抛出的异常,编译仍然能顺利通过,但运行时会被系统抛出。

运行时异常

RuntimeException 异常是程序运行过程中产生的异常。Java 类库的每个包都定义了异常类,所有这些类都是 Throable 类的子类。Throwable 类派生了两个子类,分别是 Exception 和 Error 类。Error 类及其子类用来描述 Java 运行系统中内部错误以及资源耗尽的错误,这类错误比较严重。Exception 类称为非致命类,可以通过捕捉处理使程序继续执行。Exception 类又根据错误发生的原因分为 RuntimeException 异常和除 RuntimeException 之外的异常。

异常的使用原则

Java 异常强制用户去考虑程序的健壮性和安全性。异常处理不应用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应的处理。编写代码处理某个方法可能出现的异常时,可遵循以下几条原则:

  • 在当前方法声明中使用 try-catch 语句捕获异常。
  • 一个方法被覆盖时,覆盖他的方法必须抛出相同的异常或异常的子类。
  • 如果父类抛出多个异常,则覆盖方法必须抛出那些异常的一个子集,不能抛出新的异常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值