아이티클래스

자바쓰로우0

 

자바 예외 상황 발생시 던지세요 - java throw문

 

 

자바에서는 예외 상황이 발생하면 예외(Exception)를 던지게(throw) 된다.

 

이때 던져지는 예외 객체는 java.lang.Throwable 클래스를 상속 받은 클래스이다.

 

즉 사용자는 Throwable 클래스를 상속받아 새로운 예외를 정의하고 이 객체를 발생시킬 수 있다.

 

하지만 실제 사용자 정의 예외 클래스를 만들 때는 Throwable 클래스를 상속받는 것보다는 예외 클래스가 가지고 있어야 할 기본적인 기능을 가지고 있는 Exception 클래스를 상속받아 만드는 것이 더 좋다.

 

예외 객체를 예외 상황이 발생하는 메소드를 호출한 쪽으로 던지게 되면 예외 객체를 받은 쪽에서는 해당 메소드가 어떠한 문제가 있는지를 알 수 있게 된다.

 

이때 예외 객체를 던지기 위해서 "throw 예외객체 ;"문을 사용한다.

 

 

 

throw new Exception();
throw new Exception("b가 0입니다.");

 

예외를 던지기 위해 throw 키워드를 사용하여 Exception 예외를 던지고 있다.

 

첫번째 예외는 매개변수 없이 예외를 던지고 있으며 두번째는 매개변수를 함께 던지고 있다.

 

예외를 던질 때 매개변수를 함께 던지게 되면 예외 상황에 대한 구체적인 이유도 함께 전달할 수 있다.

 

 

 

public class NewException extends Exception
{
	public NewException(){};
    
    public newException(String s)
    {
    	super(s);
    }
}

 

사용자 예외 클래스인 NewException은 상위클래스인 Exeption를 상속받고 있다. 

 

super(s)는 상위클래스의 생성자를 사용하겠다는 뜻이다.

 

 

 

java throws문

 

예외를 처리하기 위해서는 예외 상황이 발생하는 메소드 내에서 try/catch문을 사용한다.

 

2020/04/02 - [Java] - try/catch문

 

try/catch문

try/catch문 예외가 발생하는 위치에서 예외를 처리하기 위해서는 try/catch문을 사용한다. try블록 내에는 에러를 발생시킬수 있는 코드를 넣고 catch블록에는 예외의 처리 코드를 포함해야 한다. try { //예외..

veloper.tistory.com

 

하지만 메소드 밖에서 예외를 처리하는 방법은 없을까?

 

메소드 밖에서 예외를 처리하기 위해서는 메소드가 발생시킬 수 있는 예외들을 throws문을 이용해 명시해 주어야 한다.

 

이렇게 throws문에 의해 명시된 예외는 해당 메소드에서 try/catch문을 이용해 처리하지 않아도 된다.

 

하지만 메소드가 호출한 곳으로 예외가 전파되기 때문에 호출한 쪽에서는 해당 예외를 try/catch문을 이용해 처리해주거나 throws문을 통해 상위 레벨의 메소드로 다시 전파해 주어야 한다.

 

예외가 가장 상위 레벨의 메소드로 전파가 되었는데도 예외를 처리하지 못했다면 자바가상머신은 적절한 메세지를 화면에 출력하고 프로그램을 종료하게 된다.

 

 

public class ThrowsTest
{
	try
    {
    	t.test(0);    
    }
    catch(ZeroException e)
    {
    	System.out.println("caught ZeroException");
    }
  
    public void test(int num) throws ZeroException
    {
        if(num==0) throw new ZeroException();
        System.out.println(num);
    }
}

 

test() 메소드에서 넘어온 인자 값이 0이 아니면 화면에 출력하고 0이라면 ZeroException 예외를 발생시킨다.

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band