953061688145744
Park Hansu
  • 2016.6.17 11:07
  • 조회수 109
  • 답변수 1
953061688145744
Park Hansu
  • 2016.6.17 11:07
  • 조회수 109
  • 답변수 1

finally 블록은 의미론적인 건가요?

try 블록과 catch 블록은 특정 조건(예외가 있거나, 없거나) 하에 실행이 되고,
finally 블록은 무조건 실행되잖아요?

그럼 finally 블록을 사용하는 것과,
사용하지 않고 그냥 다음 줄에 코드를 적었을 때
실행결과에는 다른 점은 없는 거죠?

  • #자바 입문
  • #Exception

1 답변

  • G3rlasealonpd5c2kica
    Demi
    • 2016.6.17 11:45

    경우에 따라서 차이가 있을 수 있습니다.
    try-catch 블록에서 return문이 있는 경우에도 finally 블록은 무조건 실행됩니다.

    예를 들어

        public class ExceptionExam {
            public static void main(String[] args) {
                int i = 10;
                int j = 0;
                try{
                    int k = i / j; // 무조건 에러가 발생합니다(0으로 나눔)
                    System.out.println(k);
                }catch(ArithmeticException e){
                    System.out.println("0으로 나눌 수 없습니다. : " + e.toString());
                    return ;
                }finally {
                    System.out.println("오류가 발생하든 안하든 무조건 실행되는 블록입니다.");
                }
            }
        }
    

    이 코드를 실행했을 경우, catch문에서 return문이 있지만 finally에 "오류가 발생하든 안하든 무조건 실행되는 블록입니다."가 실행되는걸 볼 수 있습니다.

    • 답변 감사드립니다!^^-Park Hansu
      2016.6.17 12:45

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.