[Java] 예외처리 - Try Catch문

DEINGVELOP·2022년 8월 24일

Exceoption vs Error

예외 vs 에러

  • 예외 : 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류

  • 에러 : 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램에 이상이 생겼거나, JVM 실행에 문제가 생겼을 경우 발생하는 것


Exceptions

  • NullPointException : 존재하지 않는 레퍼런스를 참조할 때 발생

    • Java에서 가장 빈번하게 발생하는 에러
    • 이 에러는 객체 참조가 없는 상태, 즉 null값을 갖는 참조변수로 객체 접근 연산자인 토드(.)를 사용했을 때 발생한다.
    • 객체가 없는 상태에서 객체를 사용하려 했으니 예외가 발생하는 것이다.
  • ArrayIndexOutOfBoundsException : 배열의 범위를 벗어난 index를 접근할 시 발생

  • NumberFormatException : 문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시 발생

    • 숫자타입으로 변경할 수 없는 문자를 치환시키려고 하면 발생하는 에러
  • ClassCastException : 변환할 수 없는 타입으로 객체를 반환시 발생

    • 원칙적으로 타입 변환은 상/하위 클래스 간, 혹은 구현 클래스, 인터페이스 간에만 발생할 수 있다. 이 규칙을 무시하고 억지로 타입을 변환시킬 시 발생하는 에러이다.
  • ArithmeticException : 정수를 0으로 나눌 경우 발생

  • IllegalArgumentException : 잘못된 인자를 전달할 때 발생

  • IOException : 입출력 동작 실패 또는 인터럽트시 발생

  • OutOfMemoryException : 메모리가 부족한 경우 발생


Exception Handling

: 예외처리

  • 프로그램을 종료되지 않고 정상적으로 작동되게 만들어주는 것

  • Java에서 예외처리는 Try ... Catch 문을 통해 해줄 수 있다.


Try Catch (예외 처리 코드)


try {
	//에러가 발생할 수 있는 코드
    throw new Exception(); 		// 강제 에러 출력
} catch (Exception e) {
	// 에러시 수행
    e.printStackTrace();	// 오류 출력(방법은 여러 가지가 있다.)
    throw e;		// 최상위 클래스가 아니라면 무조건 던져주자.
} finally {
	// 무조건 수행
}

try 블록

  • try블록에는 예외가 발생할 수 있는 코드가 위치

    • try 블록의 코드가 예외없이 정상 실행 ➡ catch블록의 코드는 실행되지 않고 finally 블록의 코드 실행
    • try 블록의 코드에서 예외 발생 ➡ 즉시 실행을 멈추고 catch 블록으로 이동하여 예외처리 코드를 실행 ➡ 그리고 finally 블록의 코드를 실행
  • try catch 문을 주로 쓰는 구간은 주로 데이터베이스에 데이터를 주고받을 경우 많이 사용

    Why? 👉🏻 데이터베이스를 거쳐올때는 변수가 많이 생기기 때문 ➡ try catch문은 필수


finally 블록

  • finally 블록은 생략 가능

  • finally에는 데이터베이스와의 연결을 끊어주는 코드를 주로 삽입
    : 특정 예외가 발생하여 데이터베이스와의 연결이 끊어지지 않으면 여러가지 문제를 야기할수 있기 때문!


throw

  • 예외는 반드시 Throw해주자.

  • 최상단 클래스를 제외한 나머지 클래스에서의 예외처리는 반드시 Throw를 해주어야 한다. 그렇지 않으면 예외처리를 해주었음에도 불구하고 Main에서는 Exception을 전달받지 못하여 개발자가 예외를 인지못하는 경우가 생기기 때문!

0개의 댓글