处理所有异常

时间:2013-04-13 06:18:15

标签: java exception exception-handling

下面的代码会处理任何类型的异常吗?

try
{
    // some code
}
catch(Exception e)
{
    // some code part
}

或者我应该这样做:

try
{
    // some code 
}
catch(type of Exception e)
{
    // some coding stuff
}

5 个答案:

答案 0 :(得分:1)

你可以尝试下面的事情:

1)捕获所有Exception对象及其子类型:

try {

     // potential exception throwing code

    }
    catch(Exception e){
 }

2)捕获所有Throwable和子类型:

 try {

     // potential exception and error throwing code

    }
    catch(Throwable t){
 }

3)捕获任何XYZ异常及其子类型:

 try {

     // potential XYZException throwing code

    }
    catch(XYZException xyzException){
 }

有关详细信息,请参阅Oracle网站:http://docs.oracle.com/javase/tutorial/essential/exceptions/

答案 1 :(得分:0)

try { 
   //some code 
} catch(Exception e) { 
   //some code part 
}

它将处理所有类型的异常,因为它的所有类型的异常的父类,但是如果你得到像AWTErrorVirtualMachine Error的错误 - > OutOfMemoryErrorStackOverFlowError然后它将无法处理它。

要处理所有类型的异常,错误就是这样。

try {
    // some code 
}
catch(Throwable throwable) {
   // some coding stuff
}

示例2:

try {
    // some code 
}
catch(type of Exception e) {
   // some coding stuff
}

这不会处理所有类型的异常。如果你在这里写NullPointerException,那么它只会处理NullPointerException

记住:以这样的方式定义catch,将子类放在第一个然后是父类,否则代码变为Unreachable,你将得到编译时错误。

try {
    // some code 
}
catch(NullPointerException e) {
   // some coding stuff
}
catch(Exception e) {
  // some coding stuff
}

答案 2 :(得分:0)

这取决于catch语句中的Exception类型 catch (Exception e)将捕获任何异常,因为它是所有异常的父类。 catch (FileNotFoundException e)只会捕获FileNotFoundExceptions。

这允许你有多个catch语句:

try {
...            
}
catch (FileNotFoundException e) {
        //do something with FileNotFoundException
} 
catch (IOException e) {
        //do something with IOException
}

答案 3 :(得分:0)

try { some code } catch(Exception e) { some code part }

将捕获类型Exception或其任何子类的任何异常。如果要捕获任何异常,请使用

try { some code } catch(Throwable e) { some code part }

然后你也会得到Error s(未找到类等)。

答案 4 :(得分:0)

尝试后应该抓住。 FileNotFoundException是IOException的子异常。所以必须先行。如果您打开了一些文件并且在try块中发生异常,则需要在finally块中关闭它。当try块退出时,finally块总是执行。

try {

} 
catch (FileNotFoundException e) {
    //do something with FileNotFoundException
} 
catch (IOException e) {
    //do something with IOException
}
finally
{
     // do some clean up operation
} 

http://docs.oracle.com/javase/tutorial/essential/exceptions/try.html

http://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html

http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html

http://www.programcreek.com/2009/02/diagram-for-hierarchy-of-exception-classes/