0

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

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

或者我应该这样做:

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

5 回答 5

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/ 。

于 2013-04-13T06:31:25.203 回答
0

尝试之后应该是捕获。FileNotFoundException 是 IOException 的子异常。所以它必须是第一位的。如果您打开了某个文件并且在 try 块中发生异常,您需要在 finally 块中关闭它。finally 块总是在 try 块退出时执行。

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/

于 2013-04-13T06:34:37.770 回答
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 ,将子类放在第一个然后是父类,否则代码将变得无法访问,您将获得编译时错误。

try {
    // some code 
}
catch(NullPointerException e) {
   // some coding stuff
}
catch(Exception e) {
  // some coding stuff
}
于 2013-04-13T06:23:41.657 回答
0

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

这允许您有多个 catch 语句:

try {
...            
}
catch (FileNotFoundException e) {
        //do something with FileNotFoundException
} 
catch (IOException e) {
        //do something with IOException
}
于 2013-04-13T06:24:19.547 回答
0
try { some code } catch(Exception e) { some code part }

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

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

那么你也会得到Errors (找不到类等)。

于 2013-04-13T06:24:31.300 回答