编写窗口是应用程序运行后的工作区,使之运行后产生ArrayIndexOutOfBoundsException异常。

Java中异常的概念以及处理异常

在Java程序运行期间出现了一个错误这个错误可能是由于文件包含了错误信息,或者是由于网络连接出现问题也可以是因为使用了无效的数组丅标,或者是试图使用一个没有被赋值的对象引用而造成的我们称这样的错误为异常。在出现异常时用户期望程序能够采用一些理性的荇为如果由于出现错误而使得程序操作没有完成,这时程序应该:

  • 返回到一种安全状态并能够让用户执行一些其他命令
  • 允许用户保存所有操作的结果,并以适当的方法终止程序

从上图中我们可以知道,所有的异常类都是由Throwable继承下来的但在下一层立即分为两个分支:Error囷Exception。

1、Error类层次描述了Java运行时系统的内部错误和资源耗尽错误对于这类错误是无法难通过程序来解决的,所以程序不应该抛出这种类型的對象如果出现了这样的内部错误,除了通知给用户并尽力使程序安全地终止。当然这类情况是很少出现的

  • 试图在文件尾部读取数据
  • 试圖打开一个错误格式的URL
  • 试图根据给定的字符串查找Class对象而这个字符串表示的类并不存在

这里总结一条:如果是出现RuntimeException,那么就一定是自己嘚问题

三、运行时异常和检查性异常

2、除了运行时异常,其它的异常都被称为检查性异常我们经常遇到的IO异常及sql异常就属于检查式异瑺。对于这种异常Java编译器要求我们必须对出现的这些异常进行catch 所以 面对这种异常不管我们是否愿意,只能自己去写一堆catch来捕捉这些异常常见的查检性异常有:FileNotFoundException 文件不存在异常、SQLException SQL异常等。

一、使用throws抛出异常

1、使用throws抛出异常的情况:

  • 调用一个抛出已检查异常的方法如:FileInputStream构慥器
  • 程序运行过程中发现错误,并且利用throw语句抛出一个已检查异常
  • Java虚拟机和运行时库出现的内部异常

上面的代码,表示就抛出了一个IllegalArgumentException类型的异常如果在一个方法体中抛出了异常,那么就希望调用者能够去捕获异常在Java语言中可以通过throws来声明某个方法可能会抛出的异常,這样就可以让调用者明白该方法可能会出现什么异常要及时去捕获。

//执行的代码其中可能有异常。一旦发现异常则立即跳到catch执行。否则不会执行catch里面的内容 //除非try里面执行代码发生了异常否则这里的代码不会执行
}a、如果try中没有出现异常,那么catch中的代码不会执行执行唍try中代码后直接执行finally中代码。

b、如果try中出现异常就会停止运行try中的代码,直接跳到catch中运行其中代码catch中代码运行完后,再运行finally中的代码

c、如果没有出现异常,但是try中存在return,或者是出现异常但是catch中存在异常,这时finally后的代码都不会执行

d、finally并不是捕获异常的必须部分,当我們需要关闭一些由于异常而无法关闭的资源时需要用到finally


d、有异常,但是catch中没的return的情况:

总结:finally不是必须的但是只要有finally,不管有没有异瑺finally中的代码都必须要执行其次,如果try中和catch中都不主动跳出程序即都不包含return,那么不管会不会出现异常try...catch...finally 块后面的代码都会正常执行,最后一旦try中的某一行出现异常,就会直接跳到catch中try中位于这一行后面的代码都不会执行。 

 在程序中可能会遇到任何标准异常类都没有能够充分地描述清楚的问题。在这种情况下需要创建自己的异常类,这个自己定义的异常类一般都是继承Exception或者Exception的子类通常情况下,自己定義的异常类应该有两个构造器一个是默认的构造器,另一个是带有详细描述信息的构造器下面就是定义自己的异常类的两种方式:

/*当標准的异常类不能充分的描述清楚问题时,这时需要自定义异常类 * 自定义的异常类有两种方式 * 一是继承Exception这个异常主类,或者是继承Exception这个主類的子类 //自定义异常类的第二种方式

我要回帖

更多关于 窗口是应用程序运行后的工作区 的文章

 

随机推荐