- 
          
          231028_Java 8장Individual Learning/Java 2023. 10. 28. 13:008장 예외처리 구조 프로그램 오류 (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