您的位置:首页 > 编程语言 > Java开发

熬之滴水穿石:JAVA的世界(7)

2013-06-02 17:55 190 查看
19--异常处理
在万事万物皆对象的java世界里,异常实际上是Excepiton类型的一个对象。因为本身就是一个对象,那么在用try catch的方法中,catch本身的也是对象。在catch区域抛出的肯定是和异常有关的方法。通常我们有2种做法来处理异常,一是抛出异常的程序代码,二是调用该代码的程序代码去恢复错误。在异常类中,基类是Exception,其子类分别是IOexception,interuptedException,RunTimeException三个类其中Exception继承的则是Throwable。同样继承Throwable的还有一个叫Error的类

JAVA采取了简洁便捷的异常处理机制,这种方式让程序员知道在什么地方用异常机制去防止代码所产生的风险。因此程序员实际上是事先准备好对问题的处理程序或是从错误中恢复。各种异常类的存在就是为了解决不同的问题,像Error类基本上是由JVM自己抛出的,一般在系统运行时出现了资源耗尽等情况,非程序员所考虑的范畴。

对于程序员而言,应该把经历关注在Exception上,尤其是RuntimeException类。RuntimeException类是不属于编译器的管辖范围的,所以程序在运行期间出现这类错肯定是代码的问题。通常我们的做法是抛出异常的程序代码,一般在方法上加上一句throws,throws方法并没有解决问题只是在想办法把问题绕开。在上章节中,我们的方法都是放在栈中的,用throws方法的话,那么我们会看到这个异常会一级级的丢给下一个方法直至丢给JVM。是不是一种很不负责任的方式,所以对于真正的程序员还是需要用这种方式来处理问题。那就是在代码中用try..catch等方式解决异常恢复的问题,即便我们不能恢复通常也会用printstacktrace()输出对我们程序有用的信息。IOException通常都是程序的运行环境中出现的外部错误。

在处理异常时我们通常用try....catch或者用try....finally的方法。异常处理其实是处理所有可能的异常,在方法块里throws多个异常。由于异常也是一种对象,所以除了可以抛出之外没有什么特别的。异常也能够用多态的方式来引用。这样的好处是方法不必明确的声明每个可能抛出的异常,只要声明父类就可以了。对于catch块而言也可以不必对每个可能的异常作处理,只要有一个或者少数几个catch就可以处理异常了。这也是一个非常实用的方法,1)以异常的父类声明抛出异常(例如在方法中写throws 父类异常),2)以所抛出的异常父型来catch异常(例如:在catch(父类异常)等)。当然如果一个异常类下有多个子类,我们确实需要如实的处理各种异常类的情况时,你可以用catch的方法把每个异常类都捕获出来。但是这里一定要注意个方法,在继承的关系中,层次越高的话其实是最为抽象的,层次越低的话是越来越有特定的取向。所以在catch中要从层次低的逐渐往上走,这样才能让异常能准确的捕获到。如果不这么做的话,那么永远捕获到的都是最高层次类抽象的异常类。
(未完待续...........)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: