예외처리

losuif·2021년 8월 6일
0

학원 복습 - JAVA

목록 보기
31/32
post-thumbnail

👩🏼‍💻 예외 (Exception) / 예외처리


  • 프로그램은 정상 실행 but 실행 중에 정상 종료되지 않는 에러
    (컴파일 에러 : 실행 X)

  • Exception Class => 정상 실행 중 오류 발생 시 오류의 종류를 확인 할 수 있다.
    (Exception 내장 클래스 : 최상위 클래스, 하위에 예외처리와 관련된 서브클래스들이 있는데, 이 클래스들을 사용하여 어떤 예외가 발생했는지 파악하고, 정상종료되도록 처리할 수 있다.)

  • Checked Exception : 반드시 try-catch(-finally)문 사용해야 하는 예외처리
    Unchecked Exception : try-catch문이 없어도 컴파일되고 실행되는 예외처리
    (but 둘 다 try-catch 사용해야함,,,롸?)

  • try {
       일반 코드
       (=예외(Exception) 발생 가능성이 있는 코드)
    } catch (예외가발생했을때의자료형  변수명) {
       예외가 발생했을 때 대체할 코드
    } finally {
      정상실행 또는 예외발생에 무관하게
      항상 실행되는 코드(필요한 경우 작성)
    }



💻 수동으로 예외 발생시키기


  • 매뉴얼 익셉션 / 커스텀 익셉션 / 익셉션 던지기 / 스로우 익셉션

  • 커스텀메서드에서 throw 구문을 사용하여 익셉션 객체를 생성하고 전달



🔎 예외던지기 quiz

메인클래스)

package pack_Throw;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		
		System.out.println("10이하의 자연수 입력 : ");
		int num = scanner.nextInt();
		
		scanner.close();
		
		Custom objCustom = null;
		
        
		try {
			objCustom = new Custom(num);
			objCustom.mtd();
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}

}

커스텀클래스)
package pack_Throw;

public class Custom {

	private int num;
	
	public Custom(int num) throws Exception {
    
		if (num>0 && num<=10) {
			this.num = num;	
            
		} else {
			throw new Exception("숫자를 다시 입력해주세요.");
		}
	}
	
	public void mtd() {	
		System.out.println("입력값은 " + num + "입니다.");
	}
}



💻 NullPointerException


  • pointer : 주소 / null : 미입력 상태를 의미하는 값

  • 참조자료형(기본자료형X)에서 참조할(초기화할) 실제 값이 있는 주소가 없는 경우 (참조값 자체가 없는 경우)
    / 참조할 실제 값이 있는 주소에 전기신호가 들어있지 않은 경우

  • JSP에서 가장 많이 만나게 될 에러!

기본 자료형 : int, long, float, double, char, boolean
	  => 실제 값을 변수에 저장
참조 자료형 : 배열, 클래스, 인터페이스, 열거
	  => 실제 값이 있는 주소를 변수에 저장
  • ex)
package pack_NullPointer;

public class Main {
	
	static String str;

	public static void main(String[] args) {

		try {
			
			String a = new String(str);
			System.out.println("a : " + a);
			
		} catch (NullPointerException e) {
			System.out.println("실제값이 존재하지 않습니다.");
		}
	}

}

0개의 댓글