본문 바로가기

LANGUAGES, METHODLOGY

[자바 예외처리] Exception() 에 메시지 설정해서 던지기

이번 과제는 try, catch, throw, throws 등을 활용한 간단한 프로그램을 만드는 것인데, 


Exception 을 활용하여 대충 설계를 마쳤는데 총 실행된 세개의 메소드에서


예외를 던진 메소드로부터 메세지를 얻어 출력하고 싶었는데 어떡하지 어떡하지 하다 방법을 찾았다.


Exception을 의도적을 발생시키는 구문이 throw new Exception() 인데, 괄호 안에 담고싶은 메세지를 


넣어두기만 하면 된다. 



public class Main extends Exception{


public static void main(String[] args) throws Exception {

// TODO Auto-generated method stub

// try문 안에서 메소드 세개를 실행한다. 예외는 thrower3()에서 발생한다.

try {

thrower1();

thrower2();

thrower3();

} catch (Exception e){


// 발생한 Exception e를 받고, e.getMessage()를 통해 e에 담긴 메세지를 포함해 출력한다.

// 예외는 thrower3()에서 발생하고, thrower3()이라는 메세지를 담아 throw 하였음으로

// thrower3()에서 예외를 받았습니다. 라는 문장을 출력하게 된다.

System.out.println(e.getMessage() + "에서 예외를 받았습니다.");

} finally {

// 예외와 상관없이 실행되는 finally 문.

System.out.println("finally문이 실행됩니다.");

}

}


private static void thrower1() throws Exception {

// TODO Auto-generated method stub

System.out.println("thrower1()은 Exception을 던지지 않습니다.");

}

private static void thrower2() throws Exception {

// TODO Auto-generated method stub

System.out.println("thrower2()은 Exception을 던지지 않습니다.");

}

private static void thrower3() throws Exception {

// TODO Auto-generated method stub

// throw new Exception()으로 예외를 의도적으로 발생시킨다.

// Exception 괄호 안에는 담고싶은 메세지를 포함하며, 메세지는 발생시킨 메소드 이름의 String으로 설정했다.

System.out.println("thrower3()에서 Exception을 던집니다.");

throw new Exception("thrower3()");

}


}