처음부터 시작하는 Java
  • throw로 고의적 예외 발생
    2021년 03월 29일 10시 47분 17초에 업로드 된 글입니다.
    작성자: 원2
    728x90
    반응형

     

    throw를 통해 고의로 예외를 발생.
    getMessage를 통해 예외객체 생성시 인자를 뭘 썼는지 알 수 있따.

     

    public class Ex8_6 {
    
    	public static void main(String[] args) {
    		try {
    			Exception e = new Exception("고의로 발생시켰음"); 	// 예외가 만들어졌다.
    			System.out.println("---------절취선 ---------");
    			throw e ; 										//예외를 발생시키다.
    			// throw new Exception("고의로 발생기켰음"); 위의 두 줄을 한 줄로 만듬.
    		} catch (Exception e) {
    			System.out.println("에러 메세지 : " + e.getMessage());
    			e.printStackTrace();
    		}
    		System.out.println("프로그램이 정상 종료되었음");
    	}
    
    }
    

    checked 예외, unchecked 예외

    checked 예외 // try catch문을 입력해야함. //  대형사고 불  지름
    컴파일 조차 실행이 되지 않는다.

    public class Ex8_7 {
    
    	public static void main(String[] args) {
    		throw new Exception();
    	}
    
    }
    
    

    unchecked 예외 // 소형사고 물 쏟음
    컴파일은 되는데 예외 발생

    public class Ex8_8 {
    
    	public static void main(String[] args) {
    		throw new RuntimeException();
    	}
    
    }
    

    Test1 에서 실행 해버리고 만다.
    try -catch 를  사용하면 Test 1, Test 2 모두 출력한다. 메인에게 떠넘기기

    public class Test001 {
    	static void Test1() throws RuntimeException {
    		System.out.println("난 테스트1");
    		throw new RuntimeException();
    	}
    
    	static void Test2() throws Exception {
    		System.out.println("난 테스트2");
    		throw new Exception(); 		// 던지는 법 
    	}
    
    	public static void main(String[] args) {
    		try {
    			Test1(); 		// 스테틱 영역은 인스턴스 객체를 만들어 줄 필요가 없기 때문에 바로 호출이 가능하다.
    		} catch (Exception e) {
    			
    		}
    		//Test2(); 		// 에러이유 try catch문이 없어서
    		try {
    			Test2();
    		} catch (Exception e) {
    			
    		}
    	}
    
    }
    

    JVM에게 떠넘기기 : 최악의경우 // 프로그램 포기 해 버림; 자체적으로 해결하는게 가장 좋다.

     

    728x90
    반응형

    'Language > Java' 카테고리의 다른 글

    hashCode 와 identityHashCode  (0) 2021.03.29
    equals()  (0) 2021.03.29
    finally 블럭  (0) 2021.03.29
    예외클래스의 계층구조 / printStackTrace 와getMessage  (0) 2021.03.29
    try - catch 문 기본  (0) 2021.03.29
    내부 클래스의 제어자와 접근성 예제2  (0) 2021.03.26
    댓글