"재미있는 수업이 몇 개 더 있어요. 오, 가르치는 게 정말 좋아요!"
"여러 catch 블록이 작동하는 방식에 대해 말씀드리고 싶습니다 . 매우 간단합니다. try 블록에서 예외가 발생하면 실행이 첫 번째 catch 블록으로 이동합니다."
"catch 블록의 괄호 안에 표시된 유형이 발생한 예외 유형과 일치하면 해당 블록 내에서 실행이 시작됩니다. 그렇지 않으면 동일한 검사가 수행되는 다음 catch 블록 으로 이동합니다 ."
" catch 블록이 부족 하고 예외가 포착되지 않으면 예외가 다시 발생하고 현재 메서드가 비정상적으로 종료됩니다."
"그렇군요. 예외 유형과 일치하는 catch 블록이 실행될 것입니다."
"네, 맞습니다. 하지만 실제로는 좀 더 복잡합니다. 클래스는 다른 클래스를 상속할 수 있습니다. Cow 클래스가 Animal 클래스를 상속받는 경우 Cow 객체는 Cow 변수뿐만 아니라 Animal 변수에 의해서도 참조될 수 있습니다. "
"그리고?"
"모든 예외는 Exception 또는 RuntimeException ( Exception 도 상속함 )을 상속하기 때문에 여전히 'catch( Exception e)' 또는 ' catch(RuntimeException e) ' 를 사용하여 잡을 수 있습니다 ."
"그리고?"
"우리는 두 가지 결론을 내릴 수 있습니다. 첫째, 'catch(예외 e)'를 사용하여 모든 예외를 잡을 수 있습니다. 둘째, catch 블록의 순서가 중요합니다. "
"여기 몇 가지 예가 있어요:"
" ArithmeticException
0으로 나눈 후에 발생하는 는 두 번째 catch 블록에서 잡힙니다."
try
{
System.out.println("Before calling method1.");
int a = 1 / 0;
System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
System.out.println("Division by zero. Exception has been caught.");
}
catch (Exception e)
{
System.out.println("Any other errors. Exception has been caught.");
}
"아래 예에서 ArithmeticException
모든 예외는 예외를 상속하므로 첫 번째 catch 블록에서 catch됩니다. 즉, Exception
모든 예외를 포함합니다. "
try
{
System.out.println("Before calling method1.");
int a = 1/0;
System.out.println("After calling method1. This will never be shown.");
}
catch (Exception e)
{
System.out.println("Any other errors. Exception has been caught.");
}
catch (NullPointerException e)
{
System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
System.out.println("Divided by zero. Exception has been caught.");
}
"아래 예에서는 ArithmeticException
잡히지 않습니다. 호출 메서드로 다시 throw됩니다."
try
{
System.out.println("Before calling method1.");
int a = 1/0;
System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
System.out.println("Null reference. Exception has been caught.");
}
"그것으로 문제가 조금 정리되었습니다. 이러한 예외는 가장 쉬운 주제가 아닙니다."
"그냥 그런 것 같습니다. 실제로 Java에서 가장 간단한 것 중 하나입니다."
"기뻐해야 할지 슬퍼해야 할지 모르겠어..."
GO TO FULL VERSION