코딩항해기

[JAVA] 예외처리 try-catch (+예외던지기 throw, throws) 본문

JAVA

[JAVA] 예외처리 try-catch (+예외던지기 throw, throws)

miniBcake 2024. 7. 24. 17:43

 

 

 

 

에러와 예외

에러(Error)

java.lang.Error 클래스의 하위 클래스들이다. Error는 메모리가 부족하는 등과 같이 시스템이 비정상적인 상황인 경우에 사용한다. 주로 JVM에서 발생시키기 때문에 코드에서 잡아서는 안되며, 잡아서 대응할 수 있는 방법도 없다. 따라서 시스템 레벨에서 특별한 작업을 하는게 아니라면 이러한 에러 처리는 하지 않아도 된다.

 

예외(Exception)

java.lang.Exception 클래스와 하위 클래스들은 Error와 달리 애플리케이션 코드에서 예외가 발생하였을 경우에 사용된다. 그리고 Exception 은 다시 체크 예외와 언체크 예외로 구분된다.

 

 

발생 시점 예외 구분

확인된 예외, 체크 예외 (checked Exception) 컴파일 단계에서 발생하는 예외
미확인 예외, 비체크 예외 (unchecked Exception) 프로그램 실행 중(런타임) 발생하는 예외

 

 

예외처리

예외가 발생했을 때 프로그램이 비정상적으로 종료되는 것을 막고 정상적으로 실행될 수 있도록 처리하는 것을 의미한다

 

예외처리 문법

try( 
	실행할 명령문; //(예외가 예상되는 코드) 
}
catch(예외이름 객체명){ 
	예외를 처리하는 명령문; //(예외발생 시 실행할 코드) 
}
catch(예외이름 객체명){ 
	예외를 처리하는 명령문; //(예외발생 시 실행할 코드) 
}
finally{ 
	오류 발생 여부에 상관없이 무조건 실행할 코드; //생략가능 
}

 

 

예외클래스에서 제공하는 메소드

getMessage() 예외 메세지를 문자열로 반환한다.
toString()  발생한 예외 객체를 문자열로 반환한다.
(toString은 생략가능)
printStackTrace()  예외 발생지점을 추적하여 단계별로 전부 추적하여 안내한다.

 

자바에서는 발생할 수 있는 오류를 클래스로 정의해두었다.

만약 실행 중 오류가 발생하면 해당 오류 클래스의 객체가 생성된다. (메모리 할당)

예외처리를 해 두었다면 그 객체의 주소를 catch(예외클래스 참조변수)의 참조변수가 받게된다.

오류메세지는 문자열 값으로 출력된다.

 

 

 

 

throw, throws

throws

예외 던지기로  메서드의 선언부에 사용한다,

메서드를 사용 시 발생할 수 있는 오류를 메서드를 정의할 때 처리하지 않고,

해당 메서드를 사용하는 쪽으로 넘겨 메서드를 사용하는 개발자가 처리하도록 한다.

메서드에서 각각 예외를 처리하게 되면, 어떤 상황이 벌어질 지 메서드를 정의하는 쪽에서 전부 예측하는 것이 어려울 뿐더러, 자체 코드가 길어지고 유지보수 측면에서 효율이 떨어진다.

 

ex) void method() throws 예외클래스명1, 예외클래스명2 { };
예외 클래스가 여러 개라면 쉼표로 나열 할 수 있다.

 

 

 

throw

예외를 강제로 발생시키기

ex) throw new 예외명();

 

사용자 정의 예외, 컴파일러가 체크하는 일반 예외를 선언할 수 있고,  컴파일러가 체크하지 않는 실행 예외로 선언할 수 있다.

일반 예외는 Exception 클래스를 상속받는 자식 클래스로 선언하고, 실행 예외는 RuntimeException 클래스를 상속받는 자식 클래스로 선언한다.

기본 생성자와 예외 메시지를 입력받는 생성자를 선언하거나 super()에 예외 메시지를 전달한다.

예외 메시지는 부모 생성자 매개값을 넘겨주는데, 예외 객체의 공통 메소드인 getMessage()의 리턴값으로 사용하기 위함이다.

 

 

 

 

[JAVA] 사용자 정의 예외

체크 예외와 비체크 예외 체크 예외 checked exception체크 예외는 RuntimeException 클래스를 상속받지 않은 예외 클래스들이다. 체크 예외는 복구 가능성이 있는 예외이므로 반드시 예외를 처리하는 코

minibcake.tistory.com

 

'JAVA' 카테고리의 다른 글

[JAVA] 사용자 정의 예외  (0) 2024.07.25
[JAVA] 2차원 배열  (0) 2024.07.25
[JAVA] 내부클래스, 익명클래스  (0) 2024.07.23
[JAVA] 상속 (+super, super())  (0) 2024.07.21
[JAVA] 생성자 (+this, this())  (0) 2024.07.20