Exception(예외 처리)

이수보🧑🏻‍💻·2022년 1월 12일
0

초급

목록 보기
17/25


우리가 가장 많이 외쳤을 그 단어...

예외 처리

코딩을 하며 많은 에러를 만나 왔겠지만 지금 까지 우리는 그 에러들이 무엇을 의미하고 무슨 에러인지 모른 채 코딩을 하고 있었다. 이제 오늘 부터는 그 에러들이 무엇인지 확인하고,
에러 발생시 코딩 방향을 설정할 수 있도록 Exception 에 대해 배워 보자.

Error

  • 컴파일 에러 : 컴파일 시에 발생되는 에러(빨간 줄)
  • 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것(버그)
  • 런타임 에러 : 실행 시에 발생되는 에러

Runtime Error

  • 런타임 에러 발생 시 발생한 위치에서 프로그램이 비정상적으로 종료된다.
    • 실행 중 빨간 줄이 가득한 콘솔창을 한 번씩 봤을 것이다.

자바의 특이점
자바는 다른 C++, C# 등의 언어와는 다르게 Error 에도 종류를 지정해 놓았다.
다른 언어들에서 Error은 모두 Error 이지만 자바에서는 Error, Exception 으로 나뉘어
에러 발생 시 처리 가능 여부에 따라 나누고 있다.

  • 에러(Error) : 프로그램 코드에 의해 수습될 수 없는 심각한 오류(처리 불가)
  • 예외(Exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류(처리 가능)

Exception

  • 모든 예외는 Exception 클래스의 자식 클래스이다.
  • 모든 RuntimeException 클래스와 그 자식들은 예외처리가 강제되지 않는다.
  • RuntimeException 클래스와 그 자식들을 제외한 Exception 클래스의 자식들은 예외처리가 강제된다.

Exception Handling

이제 부터 우리는 이 처리 가능한 예외(Exception)을 예외처리를 통해 프로그램이 비정상적으로 종료되는 것을 방지할 수 있다.

  • 사용형식
    • try{} catch(Exception e){}
try{
	int divide = 5/0;
}catch(Exception e){
	System.out.print("자바에선 정수를 0으로 나누면 에러가 뜹니다.ㅎㅎ")
}
  • try 블럭 안의 내용을 실행 중 예외가 발생하면 catch로 넘아간다.
  • catch 의 ()안에는 처리할 수 없는 예외를 지정해줄 수 있다.
  • 여러 종류의 예외를 처리할 수 있도록 catch는 하나 이상 올 수 있다.
  • 발생한 예외와 일치하는 catch 블럭 안의 내용이 수행된 후 try-catch를 빠져나간다.

다음 코드를 실행해 보자 자바는 타입 변환에 엄격하여 정수를 0으로 나누는 것은 허락되지 않습니다. 따라서 다음 코드는 오류가 납니다.
평소라면 우리는 오류가 가득한 빨간 콘솔창을 띄어야 하지만 catch에 의해 예외가 잡혀
catch 구문 안에 있는 print가 실행됩니다.

  • 발생한 예외와 일치하는 catch가 없는 경우 예외는 처리되지 않는다.

    만약 예외가 발생하거나 말거나 꼭 실행해야 할 때는?

    그럴 떄는 finally를 사용하면 됩니다.

  • 사용형식

    try{
    	예외 발생
    }catch(exception e){
    	발생 시 실행부
    }finally{
    	예외에 상관없이 무조건 적으로 실행
    }

위 처럼 사용하게 되면 예외 발생 여부에 상관 없이 코드를 실행 시켜 줄 수 있습니다.
나중에 Thread 부분으로 넘어가면 상당히 많이 쓰일 수 있는 코드이니 잘 기억해 주면 좋게땅
 

0개의 댓글