Java异常处理

本文深入探讨Java中异常处理机制,包括异常分类、声明已检查异常的方法及原则,强调正确处理错误的重要性,确保程序稳定性和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


       如果一个用户在程序运行期间,由于程序的错误或者一些外部环境的影响造成数据丢失,用户可能就不会在用这个程序了,为了避免此类事情的发生。Java使用一种称为异常处理的错误捕捉机制处理。

一、        异常的分类

Java中异常对象都是派生于Throwable类的一个实例。同时用户还可以创建自己的异类。

Throwable类下面有两大继承类,分别是ErrorException

       Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。最需要关心的是Exception层次结构。这个程序又分解为两个分支:一个分支派生于RuntimeException;另一个分支包含其他异常。划分两个分支的规则是:由于程序错误导致的异常属于RuntimeException;而程序本身没有问题。

       Java中语言规范将派生于Error类或者RuntimeException类的所有异常称为未检查异常,所有其他的异常称为已检查异常。

派生于RuntimeException的异常包括如下:

1、  错误的类型的类型转换。

2、  数组访问越界。

3、  访问空指针。

不是派生于RuntimeException的异常包括

1、  试图在文件尾部后面读取数据。

2、  试图打开一个错误格式的URL

二、声明已检查异常

       方法应该在其首部声明所有可能抛出的异常。这样可以从其首部反映出这个方法可能抛出哪些已检查异常。

       public void div(int a,int b) throws ArithmeticException

       在自己编写方法时,不必将所有可能的异常进行抛出,至于什么时候抛出,有以下集中情况:

1.        调用一个抛出已检查异常的方法。

2.        程序运行过程中发现错误,并且利用throw语句抛出一个已检查异常。

3.        程序出现错误,例如,a[-1]=0抛出一个ArrayIndexOutOfBoundsException这样的未检查异常。

4.        Java虚拟机和运行时库出现的内部异常。

如果出现前两种情况之一,则必须告诉调用这个方法的程序员有可能抛出异常。

       对于那些可能被他人只用的Java方法,应该根据异常规范,在方法的首部声明这个方法可能抛出的异常。

class  ExceptionDemo

{

       public Image loadImage(String s) throws IOException

           {}

}    

如果一个方法有可能抛出多个已检查异常,那么就必须在方法的首部列出所有的异常类。每个异常类用逗号隔开。

class  ExceptionDemo

{

       public Image loadImage(String s) throws IOExceptionMalformedURLEcception

      {}

}    

但是,不需要声明Java的内部错误,即从Error继承的错误。任何代码受具有抛出那些异常的可能,而我们对其没有任何控制能力。

       同样,也不应该声明从RuntimeException继承的那些未检查异常。

class  ExceptionA

{

       public void div(int a,int b) throws ArithmeticException

       {}

}

这些运行错误完全在我们的控制之下。如果特别关注数组下标引发的错误,就应该更多的时间话费在修正程序错误上,而不是说明这些错误发生的可能性上。

       总之,一个方法必须声明所有可能的抛出的已检查异常。而未检查异常要么不可控制,

要么就应该避免发生。如果方法没有声明所有可能发生的已检查异常,编译器就会给一个错误消息。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值