黑马程序员 java基础学习笔记6

来源:互联网 发布:编程学什么语言 编辑:程序博客网 时间:2024/04/28 06:16

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

异常:


异常也称为例外,是在程序运行过程中发生的、会打断程序正常执行的事件。


1.常见异常:

(1)算术异常(ArithmeticException)。

(2)空指针异常(NullPointerException)。

(3)找不到文件异常(FileNotFoundException)

(4)脚标越界异常(IndexOutOfBoundsException)。

(5)类型转换异常(ClassCastException)。



2.异常处理1:

异常处理是由try、catch与finally三个关键字所组成的程序块,其语法如下:

try
{
要检查的程序语句 ; try 语句块

}
catch(异常类 对象名称)
{ catch语句块
异常发生时的处理语句 ;
}
finally
{ finally语句块
一定会运行到的程序代码 ;
}
注意:
1、try程序块若是有异常发生时,程序的运行便中断,并抛出“异常类所产生的对象”。
2、抛出的对象如果属于catch()括号内欲捕获的异常类,则catch会捕捉此异常,然后进到catch的块里继续运行。
3、无论try程序块是否有捕捉到异常,或者捕捉到的异常是否与catch()括号里的异常相同,最后一定会运行finally块里的程序代码。

4、只有遇到System.exit(0)时finally不执行。



3.异常类的继承架构




4.Error与Exception区别:

(1)习惯上将Error与Exception类统称为异常类,但这两者本质上还是有不同的。Error类专门用来处理严重影响程序运行的错误,可是通常程序设计者不会设计程序代码去捕捉这种错误,其原因在于即使捕捉到它,也无法给予适当的处理,如JAVA虚拟机出错就属于一种Error。
(2)不同于Error类,Exception类包含了一般性的异常,这些异常通常在捕捉到之后便可做妥善的处理,以确保程序继续运行,如TestException7_2里所捕捉到的ArrayIndexOutOfBoundsException就是属于这种异常。
从异常类的继承架构图中可以看出:Exception类扩展出数个子类,其中IOException、RunntimeException是较常用的两种。RunntimeException即使不编写异常处理的程序代码,依然可以编译成功,而这种异常必须是在程序运行时才有可能发生。



5.异常处理2:

抛出异常:

(1)在程序中抛出异常

在程序中抛出异常时,一定要用到throw这个关键字,其语法如下:
throw 异常类实例对象;

(2)指定方法抛出异常

如果方法内的程序代码可能会发生异常,且方法内又没有使用任何的代码块来捕捉这些异常时,则必须在声明方法时一并指明所有可能发生的异常,以便让调用此方
法的程序得以做好准备来捕捉异常。也就是说,如果方法会抛出异常,则可将处理此异常的try-catch-finally块写在调用此方法的程序代码内。
如果要由方法抛出异常,则方法必须以下面的语法来声明:
方法名称(参数…) throws 异常类1,异常类2,…



6.编写自己的异常:

为了各种异常,Java可通过继承的方式编写自己的异常类。因为所有可处理的异常类均继承自Exception类,所以自定义异常类也必须继承这个类。自己编写异常类的语法如下:
class 异常名称 extends Exception
{
… …
}


8.总结:

1、程序中没有处理异常代码时,Java的默认异常处理机制会做下面的操作:
(1)、抛出异常。
(2)、停止程序运行。
2、异常处理是由try、catch与finally三个关键字所组成的程序块。
3、try程序块中若有异常发生时,程序的运行便会中断,抛出“由系统类所产生的对象”,并依下列的步骤来运行:
(1)、抛出的对象如果属于catch()括号内所要捕捉的异常类,catch会捕捉此异常,然后进到catch程序块里继续执行。
(2)、无论try程序块是否捕捉到异常,也不管捕捉到的异常是否与catch()括号里的异常相同,最后都会运行finally块里的程序代码。
(3)、 finally中的代码是异常的统一出口,无论是否发生异常都会执行此段代码。
4、当异常发生时,有两种处理方式:
(1)、交由Java默认的异常处理机制去处理。
(2)、自行编写try-catch-finally块来捕捉异常。
5、异常可分为两大类:java.lang.Exception与java.lang.Error类。
6、RunntimeException可以不编写异常处理的程序代码,依然可以编译成功,它是在程序运行时才有可能发生的;而其它的Exception一定要编写异常处理的程序代码才能使程序通过编译。
7、catch()括号内,只接收由Throwable类的子类所产生的对象,其它的类均不接收。
8、抛出异常有下列两种方式:
(1)、在程序中抛出异常。
(2)、指定方法抛出异常。
9、程序中抛出异常时,要用到throw这个关键字。
10、如果方法会抛出异常(使用throws),则可将处理此异常的try-catch-finally块写在调用此方法的程序代码中。

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net




0 0
原创粉丝点击