Exception

9mond·2023년 7월 14일
0
post-thumbnail
post-custom-banner

1. catch 블록을 사용한 복합 에러 처리

  • catch 블록은 에러가 예상되는 상황에 대해 복수로 명시하는 것이 가능하다.
	}catch( NumberFormatException e ){
		...
	}catch( ArrayIndexOutOfBoundsException e ){
		...
	}
  • 예시

    public class Main01 {
    
    	public static void main(String[] args) {
    		// 사용자 입력값을 가정
    		String[] src = { "가", "2", "aaa", "bbb" };
    
    		// src의 내용들을 숫자로 변환해서 저장할 배열
    		int[] arr = new int[3];
    
    		try {
    			for (int i = 0; i < src.length; i++) {
    				arr[i] = Integer.parseInt(src[i]);
    				System.out.println(arr[i]);
    			}
    		} catch (NumberFormatException e) {
    			System.out.println("에러 발생");
    			System.out.println("원인 : " + e.getMessage());
    			e.printStackTrace();
    		}
    		System.out.println("----프로그램을 종료합니다----");
    	}
    }

2. Exception 클래스

  • Java에서 예외 상황을 의미하는 모든 클래스들의 최상위 클래스
  • 이 클래스의 이름으로 catch 블록을 구성하면, 모든 예외 상황에 일괄적으로 대응할 수 있지만, catch 블록이 세분화된 경우와는 달리 상황별 개별적인 처리는 불가능하다.
  • Exception 클래스에 대한 예외 처리는 대부분 맨 마지막 catch 블록에 명시하여 마지막 알 수 없는 에러를 의미하도록 구성한다.
	}catch( NumberFormatException e ){
		...
	}catch( ArrayIndexOutOfBoundsException e ){
		...
	}catch( Exception e ){
		...
	}
  • 예시

    	public static void main(String[] args) {
    		// 사용자 입력값을 가정
    		String[] src = { "3", "2", "안녕", "SAM" };
    
    		// src의 내용들을 숫자로 변환해서 저장할 배열
    		int[] arr = new int[3];
    
    		try {
    			for (int i = 0; i < src.length; i++) {
    				arr[i] = Integer.parseInt(src[i]);
    				System.out.println(arr[i]);
    			}
    		} catch (NumberFormatException e) {
    			System.out.println("입력값에 오류가 있습니다.");
    			// 개발자가 보려는 용도로 출력하는 시스템 에러 메시지
    			e.printStackTrace();
    		} catch (ArrayIndexOutOfBoundsException e) {
    			System.out.println("데이터가 너무 많습니다.");
    			e.printStackTrace();
    		} catch (Exception e) {
    			/*
    			 * 예외 종류를 의미하는 모든 클래스는 java.lang.Exception 클래스를 상속 받으므로,
    			 *  이 블록은 모든 종류의 예외에 대처할 수 있다.
    			 */
    			System.out.println("알 수 없는 예외가 발생했습니다");
    			e.printStackTrace();
    		}
    		System.out.println("----프로그램을 종료합니다----");
    	}
    }

3. 에러 객체 'e'의 기능

  • e.getMessage()
    : 간략한 에러 메시지를 리턴한다.
    : e.getLocaliseMessage()도 같은 기능을 한다.
  • e.printStackTrace()
    : 실제 예외 상황시에 출력되는 메시지를 강제로 출력
    : 개발자가 catch 블록 안에서 예외 상황을 분석하기 위한 용도로 사용한다.
profile
개발자
post-custom-banner

0개의 댓글