1. throw
연산자
예외가 블록에 의해 포착되고 Java 머신에 던져질 때까지 상속되는 (또는 오히려 ) catch
객체일 뿐입니다 . 예외 개체 자체에는 마법 속성이 없습니다.Exception
Throwable
예외가 작동하는 방식에 대한 모든 논리는 예외가 발생했을 때 Java 시스템이 동작하는 특별한 방식일 뿐입니다.
잡힌 예외를 Java 시스템에 언제든지 다시 던질 수 있습니다. 이렇게 하려면 연산자를 사용해야 합니다 throw
.
throw exception;
예:
암호 | 콘솔 출력 |
---|---|
|
|
이 코드에서 우리는 예외를 포착하고 화면에 이에 대한 메시지를 표시한 다음 다시 발생시켰습니다.
catch
다시 발생한 예외는 같은 블록의 다른 블록에서 잡을 수 없습니다 try
.
2. 귀하의 예외
그건 그렇고, 예외 개체를 직접 만들 수 있습니다. 유형이 인 개체이거나 Exception
이를 상속하는 클래스일 뿐입니다. 그리고 던져.
생각보다 쉽습니다. 예:
암호 | 콘솔 출력 |
---|---|
|
|
위의 예에서 유형이 인 새 예외 객체를 생성 RuntimeException
하고 throw
연산자를 사용하여 즉시 던졌습니다.
catch
RuntimeException 은 Exception
. 이 catch (Exception except)
코드는 클래스를 상속하는 모든 클래스의 예외 개체를 포착합니다 Exception
.
3. finally
키워드
또 다른 중요한 점. 때때로 프로그래머는 코드에서 예외가 발생했는지 여부에 관계없이 어떤 작업을 수행해야 합니다. 예를 들어 쓰기 위해 파일을 열었다고 가정합니다. 열린 파일은 를 호출하여 닫아야 합니다 close()
.
try
{
// Code where an exception might occur
}
catch(ExceptionType name)
{
// Exception handling code
}
finally
{
// Code that must executed no matter what happens
}
이러한 필수 작업을 수행하기 위해 다른 종류의 블록( finally
)을 구성에 추가하여 구성을 try-catch
생성했습니다 try-catch-finally
. 다음과 같습니다.
예:
FileInputStream source = null;
try
{
source = new FileInputStream("c:\\note.txt");
source.read();
}
catch(Exception except)
{
System.out.println("Caught the exception");
throw except;
}
finally
{
if (source != null)
source.close();
}
finally
블록 의 코드는 예외가 있는지 여부에 관계없이 어떤 경우에도 실행됩니다. 예외가 발생하고 잡히지 않더라도 finally
블록은 계속 실행됩니다.
그런데 예외를 포착하고 싶지 않지만 블록이 필요한 경우 구성 finally
에 대한 속기 표기법인 블록을 사용하십시오. 다음과 같이 보입니다.try-catch-finally
try-finally
try
{
// Code where an exception might occur
}
finally
{
// Code that must executed no matter what happens
}
GO TO FULL VERSION