프로그래밍 스티치

예외 발생시키기 본문

JAVA/예외처리

예외 발생시키기

프로그래밍 스티치 2022. 2. 8. 14:01
예외 발생시키기

키워드 throw를 사용해서 프로그래머가 고의로 예외를 발생시킬 수 있다!

 

방법은

 

1.연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음

 ex) Exception e = new Exception("고의로 발생 예시");

 

2.키워드 throw를 이용해서 예외를 발생시킨다.

  thorw e;

try {
			Exception e = new Exception("고의로 발생시켰음.");
			throw e;	 // 예외를 발생시킴
		//  throw new Exception("고의로 발생시켰음.");

		} catch (Exception e)	{
			System.out.println("에러 메시지 : " + e.getMessage());
			e.printStackTrace();
		}
		System.out.println("프로그램이 정상 종료되었음.");

Exception인스턴스를 생성할 때, 생성자에 String을 넣어주면, 이 String이 Exception인스턴스에 메시지로 저장된다. 이 메시지는 getMessage()를 이용해서 얻을 수 있다!

 

그렇다면 예외를 왜 일부러 발생시킬까? 그 이유는

1.디버깅을 하기위해서

2.필터링을 하는것 ->이후에 로직을 타지않기 위해서

3.피드백을 위해서 

 

정도로 요약할 수 있을것 같다.

checked예외, unchecked 예외
public static void main(String[] args) {
		throw new Exception();		// Exception을 고의로 발생시킨다.
	}

이 예제를 작성하고나면 thow new Exception();에 빨간색 밑줄이 생기며 컴파일이 되지않을것입니다. 바로 예외처리가 되어있지 않기때문인데요, 위의 결과에서 알 수 있는것처럼 'Exception클래스와 그 자손들(checked예외)'은 예외가 발생할 가능성이 있는 문장들에 대해 예외처리를 해주지 않으면 컴파일 조차 되지 않습니다.

 

즉 예외처리 필수!

public static void main(String[] args) {
		throw new RuntimeException();	// RuntimeException을 고의로 발생시킨다.
	}

하지만 위의 예제는 예외처리를 하지않았음에도 불구하고 컴파일이 성공적으로 진행이됩니다. 하지만 실행하면 RuntimeException이 발생하여 비정상적으로 종료 됩니다. 이러한 이유는 'RuntimeException클래스와 그 자손(unchecked예외)'에 해당하는 예외는 프로그래머가 실수로 발생하는 것들이기 때문에 예외처리를 강제하지 않습니다.

만약에 RuntimeException클래스들에 속하는 예외가 발생할 가능성이 있는 코드에도 예외처리를 해야한다면, 참조변수와 배열이 사용되는 모든 곳에 예외처리를 해주어야 할것입니다.

'JAVA > 예외처리' 카테고리의 다른 글

finally블럭  (0) 2022.02.09
메서드에 예외 선언하기  (0) 2022.02.08
멀티 catch 블럭  (0) 2022.02.08
try-catch문에서의 흐름  (0) 2022.02.08
예외처리(exception handling)  (0) 2022.02.08