Haekt‘s log

[JAVA] 예외처리( Exception ) 하는법 본문

언어/JAVA

[JAVA] 예외처리( Exception ) 하는법

Haekt 2022. 10. 2. 14:51

웹 서비스를 만들때에 오류페이지가 뜨는 것은 한번쯤은 겪어보셨을 텐데요. 이 오류페이지를 코딩을 하는 경우도 있답니다.

 

그런데 JAVA 에서도 비슷한 기능이 존재합니다. 코드 실행중 예외상황(에러)이 발생했을때 특정 기준으로구분하여 예외처리하는

 Exception 입니다. 

 

예외처리를 하는 방법은 간단합니다. 

try-catch 문을 사용하면 매우 간단하게 예외처리가 가능합니다. 

 

- try-catch문 


try{   //괄호 안의 코드를 실행

	//실행할 코드
    //ex System.out.println("trying..");
    
    throw /* new Exception() */;  //Exception 예외를 발생시킴
    
}
catch(/* Exception e */){  // 만약 try실행중 Exception 예외가 발생하였을 경우 실행

	//예외 발생시 실행할 코드
    
    //ex) e.printStackTrace();    //예외의 내용 출력 
    
}
finally{  // try catch 실행 후 무조건 실행
	// ex) System.out.println("try-catch is END!");
}

 

try-catch 는 try 부분의 코드를 실행한 후 만약 특정 조건의 예외상황이 발생하면 catch 부분의 코드를 실행시킵니다. 

 

  • Try : 중괄호 안의 코드를 실행
  • throw : 의도적으로 예외상황을 발생시킴 
  • catch() : Try 코드 실행중 괄호 안의 예외상황이 발생하였을 때를 잡아내, 특정 코드를 실행
  • finally : Try catch 실행 후 무조건으로 실행

 

* try-catch 는 코드 런타임에만 작동합니다. 문법 오류와 같은 상황에는 catch 는 발생하지 않습니다.

 

 

 

* 예외의 종류


catch 나 throw 에 쓰는 예외의 종류입니다.

 

java.lang.Exception 에  여러가지 예외들이 상속되어 있습니다. 아래의 링크에서 살펴볼 수 있습니다.

https://docs.oracle.com/javase/7/docs/api/

 

Java Platform SE 7

 

docs.oracle.com

 

http://web.deu.edu.tr/doc/oreily/java/fclass/ch12_js.htm

Exception 은 상위 예외로, RuntimeException, ClassNotFoundException 등 의 예외를 포함합니다. 

 

// catch() 작성 예시

catch( RuntimeException e ){}
catch( ClassNotFoundException e ){}
catch( Exception e ){}   // Exception 이 위 예외를 모두 포함함. 변수 이름은 맘대로 해도 됨.

* Exception 은 RuntimeException 과 같은 예외의 상위 예외이므로, catch 를 한번에 나란히 쓸 수 없음

* 상위 예외와 나란히 쓰고 싶을 경우 항상 상위예외가 아래로 가도록 한다.

 

 

 

* 예제



public class st2 {
	
	public static void main(String[] args)
	{
		
		try {
			System.out.println("try!");
			throw new IllegalArgumentException();

		}
		catch( IllegalArgumentException e )
		{
			System.out.println("ll");
		}
		catch( NullPointerException e )
		{
			System.out.println("Null");
		}
		catch( Exception e)
		{
			System.out.println("ex");
		}
		finally{
			System.out.println("end!");
		}
		
		
	}//main
	
}//class

 

결과 - 

해석
  1. try 의 "try!" 출력
  2. try의 throw new IllegalArgumentException(); 으로 인해 catch (IllegalArgumentException e)실행
  3. catch (IllegalArgumentException e) 의 "ll" 출력
  4. finally 의 "end!" 출력

 

Comments