java中的异常处理问题??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的异常处理问题??相关的知识,希望对你有一定的参考价值。

java异常处理中的catch语句可以有多个,但是catch后面的异常类的类型可以是父子类关系吗?
有的书中说:各个catch参数中的异常类都是Exception的某个子类,表明try部分可能发生的异常,这些子类之间不能有父子关系,否则保留一个含有父类参数的catch就可。
而又有的书中说:若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面。
到底哪个正确,求高手解答!!!!!!!!!
小弟在这先谢了

首先所有异常都是Exception的子类。
try后面可以跟多个catch,并且多个catch的异常可以有父子关系,但是要先catch子类异常,再catch父类异常。

举例来说,SocketException套接字异常是IOException输入输出异常的子类,也就是说SocketException是具体的一种IOException,当然还有其它种类的IOException。
所以要先catch(SocketException e),再catch(IOException e),这样的意思就是如果是SocketException异常就会在前面的catch被抓到,否则其它的IOException就会在后面被抓到。这样你就可以理解为什么要把子类放前面catch了
参考技术A 都对,你完全可以用一个父类去处理它所有子类的异常,比如用Exception
因为所有异常都是Exception的子类,如果你把Exception放在前边捕获,后边的catch将永远不会执行
不知道第一个说的太绝对还是有其他限制条件,至少你说的第一个从你发的内容来看很差劲
参考技术B 若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面。
这个是正确的。
说到底,所有的异常都是Exception的子类

怎么处理Java中的异常

1  引言
在JAVA语言出现以前,传统的异常处理方式多采用返回值来标识程序出现的异常情况,这种方式虽然为程序员所熟悉,但却有多个坏处。

首先,一个API可以返回任意的返回值,而这些返回值本身并不能解释该返回值是否代表一个异常情况发生了和该异常的具体情况,需要调用API的程序自己判断并解释返回值的含义。

其次,并没有一种机制来保证异常情况一定会得到处理,调用程序可以简单的忽略该返回值,需要调用API的程序员记住去检测返回值并处理异常情况。这种方式还让程序代码变得晦涩冗长,当进行IO操作等容易出现异常情况的处理时,你会发现代码的很大部分用于处理异常情况的switch分支,程序代码的可读性变得很差。
上面提到的问题,JAVA的异常处理机制提供了很好的解决方案。通过抛出JDK预定义或者自定义的异常,能够表明程序中出现了什么样的异常情况;而且JAVA的语言机制保证了异常一定会得到恰当的处理;合理的使用异常处理机制,会让程序代码清晰易懂。
2 JAVA异常的处理机制
    当程序中抛出一个异常后,程序从程序中导致异常的代码处跳出,java虚拟机检测寻找和try关键字匹配的处理该异常的catch块,如果找到,将控制权交到catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被重新执行。如果没有找到处理该异常的catch块,在所有的finally块代码被执行和当前线程的所属的ThreadGroup的uncaughtException方法被调用后,遇到异常的当前线程被中止。
3 JAVA异常的类层次
JAVA异常的类层次如下图所示:

 

图1 JAVA异常的类层次
Throwable是所有异常的基类,程序中一般不会直接抛出Throwable对象,Exception和Error是Throwable的子类,Exception下面又有RuntimeException和一般的Exception两类。可以把JAVA异常分为三类:
        第一类是Error,Error表示程序在运行期间出现了十分严重、不可恢复的错误,在这种情况下应用程序只能中止运行,例如JAVA 虚拟机出现错误。Error是一种unchecked Exception,编译器不会检查Error是否被处理,在程序中不用捕获Error类型的异常;一般情况下,在程序中也不应该抛出Error类
参考技术A 用 trycatch(Exception e)来捕获

以上是关于java中的异常处理问题??的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中的异常处理

java中的异常处理---捕获异常或者抛出异常

java中的异常处理---捕获异常或者抛出异常

怎么处理Java中的异常

java中的异常处理的基本结构

java中的异常处理