일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 클라우드컴퓨팅
- 보안
- 네트워크
- 프로그래밍
- 인공지능
- 웹개발
- Yes
- 파이썬
- 2
- 컴퓨터비전
- 데이터베이스
- 코딩
- 사이버보안
- 네트워크보안
- 소프트웨어
- 빅데이터
- 머신러닝
- 프로그래밍언어
- 컴퓨터공학
- 알고리즘
- 컴퓨터과학
- I'm Sorry
- 딥러닝
- 자료구조
- 버전관리
- 데이터분석
- 소프트웨어공학
- 데이터구조
- 자바스크립트
- 데이터과학
- Today
- Total
스택큐힙리스트
자바에서 finally 블록은 항상 실행되나요? 본문
이 코드를 고려할 때, something()가 무엇이든간에 finally 블록이 항상 실행되는 것을 절대적으로 확신할 수 있나요?
try {
something();
return success;
}
catch (Exception e) {
return failure;
}
finally {
System.out.println(I don't know if this will get printed out);
}
답변 1
네, finally 코드 블록 실행 후에 try 또는 catch 코드 블록이 호출됩니다.
finally라는 말이 호출되지 않는 유일한 경우는 다음과 같습니다:
만약 당신이 System.exit()를 호출한다면
당신이 Runtime.getRuntime().halt(exitStatus)을 호출한다면
JVM이 먼저 충돌하면
만약 JVM이 try 또는 catch 블록에서 무한 루프 (또는 다른 중단할 수 없는, 종료되지 않는 문장)에 도달하면
OS가 JVM 프로세스를 강제로 종료하는 경우; 예: UNIX에서 kill -9
만약 호스트 시스템이 죽으면; 예를 들어, 전원 공급 장애, 하드웨어 오류, OS 패닉 등 등.
만약 finally 블록이 데몬 스레드에 의해 실행되고 다른 비-데몬 스레드들이 모두 finally가 호출되기 전에 종료된다면
답변 2
Java에서 항상 finally 블록이 실행되나요?
Java에서 예외 처리는 응용 프로그램에서 오류가 발생했을 때 처리하는 일반적인 방법입니다. 예외 처리는 코드의 일부가 예외를 throw하는 것일 때 코드의 실행을 변경합니다.
Java에서는 try-catch-finally 블록을 사용하여 예외 처리를 수행합니다. try 블록 내에서 예외가 발생하면 해당 예외가 발생 할 때까지 try 블록 안의 코드가 실행됩니다. 예외가 발생하면 예외 객체가 생성되고 catch 블록에서 처리됩니다.
그러나 항상 예외가 발생하지 않습니다. 예외가 발생하지 않으면 try 블록이 완전히 실행되고 catch 블록이 건너뛰어집니다. 그럼에도 불구하고 finally 블록은 항상 실행됩니다.
finally 블록은 try 블록이나 catch 블록이 실행 된 후에 실행됩니다. finally 블록의 코드는 try 블록에서 예외가 발생해도, 예외가 발생하지 않아도 또는 catch 블록이 실행되는 경우에도 실행됩니다. finally 블록은 종종 예외 처리로 발생하는 모든 리소스 정리를 처리하는 데 사용됩니다.
결론적으로, finally 블록은 항상 실행되며 예외 처리에서 중요한 역할을 합니다. finally 블록에서 리소스 초기화, 정리, 연결 닫기 및 기타 종료 작업과 같은 중요한 작업을 수행할 수 있습니다. 따라서 개발자는 항상 finally 블록을 사용하여 자원을 제대로 종료할 수 있도록 코드를 작성해야합니다.