ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 231028_Java 8장
    Individual Learning/Java 2023. 10. 28. 13:00

    8장 예외처리 구조

    프로그램 오류 (3가지)

    프로그램 실행 중 발생할 수 있는 에러는 컴파일 에러, 런타임 에러, 논리적 에러로 총 세가지다.

    컴파일 에러는 컴파일 시 발생하는 에러로, 비유하자면 컴파일 에러는 실행 전, 시스템상으로 문법이 맞지 않거나 오타 등올 인해 발생하는 에러다. 

    런타임 에러는 실행 시 발생하는 에러다. 수를 0으로 나누는 경우 발생하는 에러와 같은 것이다. Java 에서는 실행 시 발생할 수 있는 오류를 에러와 예외로 구분하고 있다. 프로그램 코드에 의해 수습 할 수 없는 심각한 오류를 에러(error), 프로그램 코드에 의해 수습될 수 있는 미약한 오류를 예외(exeption)이다.

    논리적 에러는 실행은 되지만 의도와 다르게 동작하는 것이다. 즉 컴파일과 실행이 되었지만 사람의 나이가 음수로 나오는 등 의도한 것과 다르게 동작하는 것이라고 볼 수 있다.

     

    예외처리 try-catch 문

    예외처리란 프로그램 실행 시 발생할 수 있는 예외 발생에 대비한 코드를 작성하는 것이며, 이 목적은 예외 발생으로 인한 실행 프로그램의 비정상 종료를 막고 실행상태를 유지하기 위함이다. 예외를 처리하지 못하면 프로그램은 비정상적으로 종료된다.


    class Ex8_2 {
     public static void main(String args[]) {
      System.out.println(1);
      try {
       System.out.println(0/0); //예외 발생
       System.out.println(2); 
       //예외 발생으로 실행되지 않는다.

      } catch (ArithmeticException ae)
         System.out.println(3);
         //예외 발생으로 catch가 실행된다.
      } 
      System.out.println(4);
     } 
    }


    class Ex8_1 {
     public static void main(String args[]) {
      System.out.println(1);
      try {
       System.out.println(2);
       System.out.println(3);
      } catch (Exception e)    {
       System.out.println(4);
       // 발생한 예외가 없으므로 실행되지 않는다.
      } 
      System.out.println(5);
     }
    }


    try 블럭 내에서 예외가 발생할 경우 (좌)
    1. 발생한 예외와 일치하는 catch 블럭이 있는지 확인한다.
    2. 일치하는 cathc블럭이 있다면 해당 블럭 내의 문장을 수행한 뒤 전체 try-catch문을 빠져나와서 다음 코드를 실행한다. (만일 일치하는 catch블럭을 찾지 못하면 예외는 처리되지 못하고 프로그램이 종료된다.)

    try블럭 내에서 예외가 발생하지 않은 경우(우)
    1. catch블럭을 거치지 않고 전체 try-catch문을 빠져나가서 다음 코드를 실행한다.

     

    finally블럭

    예외 발생여부와 상관없이 실행되어야 할 코드를 포함시킬 목적으로 사용하며, try-catch 문의 끝에 선택적으로 덧붙여 사용한다. 예외가 발생할 경우 try->catch->finally 순으로 실행되고, 예외가 발생하지 않게 될 경우에는 try->finally 순으로 실행된다. 프로그램 설치 코드로 설치를 진행하는 경우를 가정한다면, 설치를 정상적으로 마쳐도 임시 파일을 삭제해야 하고 예외가 발생해도 임시파일을 삭제해야 할 때 사용할 수 있다. 

    try{
     statInstall();
     copyFiles();
     deleteTempFiles();
     //프로그램 설치에 사용된 임시파일을 삭제한다.
    } catch (Exception e) { //예외가 발생했을 경우 실행
     e.printStackTrace();
     deleteTempFiles(); 
     //프로그램 설치에 사용된 임시파일을 삭제한다. 중복코드.
    }
    try{
     statInstall();
     copyFiles();
    } catch (Exception e) {
     e.printStackTrace();
    } finally {
     deleteTempFiles();
     //프로그램 설치에 사용된 임시파일을 삭제한다.
    }

    최소 요약한 내용은 모두 암기할 것. 

    'Individual Learning > Java' 카테고리의 다른 글

    좋은 수 구하기  (0) 2023.11.13
    231101_Java 2장~8장 정리  (0) 2023.11.01
    231026_Java 5장  (0) 2023.10.26
    231026_Java 3장, 4장  (0) 2023.10.26
    231025_Java 2장  (0) 2023.10.26
Designed by Tistory.