下面的代码会处理任何类型的异常吗?
try
{
// some code
}
catch(Exception e)
{
// some code part
}
或者我应该这样做:
try
{
// some code
}
catch(type of Exception e)
{
// some coding stuff
}
下面的代码会处理任何类型的异常吗?
try
{
// some code
}
catch(Exception e)
{
// some code part
}
或者我应该这样做:
try
{
// some code
}
catch(type of Exception e)
{
// some coding stuff
}
您可以尝试以下操作:
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/ 。
尝试之后应该是捕获。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/
try {
//some code
} catch(Exception e) {
//some code part
}
它将处理所有类型的异常,因为它的父类是所有类型的异常,但是如果您收到类似AWTError
或VirtualMachine Error
->的错误OutOfMemoryError
,StackOverFlowError
则它不会处理它。
要处理所有类型的异常和错误,请这样做。
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
}
这取决于您的 catch 语句中的异常类型,
catch (Exception e)
它将捕获任何异常,因为它是所有异常的父类。
catch (FileNotFoundException e)
只会捕获 FileNotFoundExceptions。
这允许您有多个 catch 语句:
try {
...
}
catch (FileNotFoundException e) {
//do something with FileNotFoundException
}
catch (IOException e) {
//do something with IOException
}
try { some code } catch(Exception e) { some code part }
将捕获任何类型的异常Exception
或其任何子类。如果要捕获任何异常,请使用
try { some code } catch(Throwable e) { some code part }
那么你也会得到Error
s (找不到类等)。