软件构造学习(一):异常处理
- 异常
- 使用try和catch关键字
- throw和throws
1.异常
在Java中所有的异常都由类来表示。所有的异常类都是由Throwable派生出来的,在程序发生异常时,就会生成某种类型的异常类的一个对象。Throwable有两个直接子类:Exception和Error。对于Error类型它发生在虚拟机中而不是程序中,超出了程序员的控制范围,通常只能退出。而除以0、数组越界、文件错误这些都属于Exception这一类,程序应该处理这些类型的异常,即在异常发生时自动执行异常处理程序。
异常产生的三种方式有:(1)内部错误发生(程序通常无法处理)(2)程序运行时发横错误导致标准异常(如数组索引越界、除以0)(3)throw语句手动抛出的异常
2.使用try和catch关键字
try和catch是异常处理的核心,两个关键字一定要一起使用。异常处理的基本形式如下:
1 try{ 2 //block of code to monitor for errors 3 } 4 catch(Type1 exob){ 5 //handler for Type1 6 } 7 catch(Type2 exob){ 8 //handler for Type2 9 } 10 . 11 . 12 .
try中是要检测有无异常的代码段,Type1、Type2是抛出异常的类型,当try中代码段抛出异常时,异常会由相应的catch语句捕获并处理。也就是说,与一个try相关的catch语句可以有多个,当一个异常被捕获后,exob会接收它的值,异常的类型决定了要执行哪一个catch语句。如果没有发生异常,try代码块就会正常结束,跳过所有的catch语句,到最后一个catch的下一条语句开始执行。
异常处理有几个关键点:1.要监视的代码段包含在try代码块中 2.抛出异常并被捕获时,try代码块被终止,控制传递给了catch而不是调用了catch。因此并不会执行引发异常语句的下一条语句,catch语句执行结束后,程序控制会直接转移到catch后面的语句。
3.throw和throws
可以将自己创建的异常类作为程序整体异常处理的一部分来处理代码中的错误,而throw语句就是用来手动抛出自己创建的异常类的实例。throw语句在方法内,在方法内部处理。手动抛出异常基本形式为:
throw exceptOb;
此处容易犯错的一点是:throw抛出的是对象!而不是类型。
throws是声明方法可能会抛出某些异常。某些情况下,如果一个方法想要产生一个自己不做处理的异常,那么他就必须用throws语句声明该异常。比如说在执行键盘输入时,必须要在main函数()中添加:
throws java.io.IOException;
这就是因为一条输入语句可能产生一个IOException异常,但却又无法处理该异常,所以让main抛出这个异常,而且需要这样来制定异常,在了解异常后,我们就可以处理IOException异常了。throws语句在方法函数头,要由方法的调用者处理。
浙公网安备 33010602011771号