2013-04-13 2 views
0

Будет ли приведенный ниже код обрабатывать любые исключения?Обработка всех исключений

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

Или я должен сделать так:

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

ответ

0
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.

Помните: определите улов таким образом, чтобы подкласс был первым, а затем родительским, иначе код станет недоступным, и вы получите ошибку времени компиляции.

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

Это зависит от типа Exception в вашем заявлении поймать catch (Exception e) будет отлавливать любое исключение, поскольку это родительский класс для всех исключений. catch (FileNotFoundException e) только поймает FileNotFoundExceptions.

Это позволяет иметь несколько операторов улова:

try { 
...    
} 
catch (FileNotFoundException e) { 
     //do something with FileNotFoundException 
} 
catch (IOException e) { 
     //do something with IOException 
} 
0
try { some code } catch(Exception e) { some code part } 

поймает любое исключение типа Exception или любой подкласс этого. Если вы хотите, чтобы поймать любое исключение, используйте

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

, то вы получите Error с (класс не найден и т.д.), а также.

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

+0

может первым - ручка "дистанционное исключение" и "Axisfault исключение" ????????? ????? – ssingh357

+0

Да, если RemoteException и AxisFaultException являются подклассами Exception. – NINCOMPOOP

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/

Смежные вопросы