자바의 정석_CHAPTER8 예외처리

jaei kim·2023년 1월 30일
0

JAVA의정석_기초

목록 보기
9/9

👉 프로그램 오류

컴파일 에러 컴파일 시에 발생하는 에러
런타임 에러 실행 시에 발생하는 에러
논리적 에러 실행은 되지만, 의도와 다르게 동작하는 에러

자바에서는 실행 시(runtime)발생할 수 있는 프로그램 오류를 '에러(error)'와 예외(exception)', 두 가지로 구분 하였다.

에러(error) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
예외(exception) 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류

👉 예외 클래스의 계층구조

👉 Exception과 RuntimeException

Exception클래스들 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
RunTimeException 프로그래머의 실수로 발생하는 예외

👉 예외 처리하기 -try-catch문

예외처리( exception handing)의
정의
프로그램 실행시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것
목적 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것

try{
	//예외가 발생할 가능성이 있는 문장들을 넣는다.
}catch ( Exception1 e1){
	//Exception1일 발생했을 경우, 이를 처리하기 위한 문장을 적는다.
}catch (Exception2 e2){
	//Exception2가 발생했을 경우, 이를 처리하기 위한 문장을 적는다.
}catct ( ExceptionN eN){
	//ExceptionN이 발생했을 경우, 이를 처리하기 위한 문장을 적는다.
}

👉 try-catch문에서의 흐름

try블럭 내에서 예외가 발생한 경우,
1. 발생한 예외와 일치하는 catch블럭이 있는지 확인한다.
2. 일치하는 catch블럭을 찾게 되면, 그 catch블럭 내의 문장들을 수행하고 전체 try-catch문을 빠져나가서 그 다음 문장을 계속해서 수행한다.
try블럭 내에서 예외가 발생하지 않은 경우,
1. catch블럭을 거치지 않고 전체 try-catch문을 빠져나가서 수행을 계속한다.

👉 printStackTrace()와 getMessage()

printStack Trace() 예외발생 당시의 호출 스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력한다.
getMessage() 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다.

👉 예외 발생시키기

1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음
Exception e = new Exception("고의로 발생시켰음");
2. 키워드 throw를 이용해서 예외를 발생시킨다.
throw e;

👉 finally 블럭

finally블럭은 예외의 발생여부에 상관없이 실행되어야할 코드를 포함시킬 목적으로 사용된다. try-catch문의 끝에 선택적으로 덧붙여 사용할 수 있으며, try-catch-finally의 순서로 구성된다.

try{
	//예외가 발생할 가능성이 있는 문장들을 넣는다.
} catch(Exception1 e1){
	//예외처리를 위한 문장을 적는다.
} finally{
	//예외의 발생여부에 관계없이 항상 수행되어야하는 문장들을 넣는다.
    //finally블럭은 try-catch문의 맨 마지막에 위치해야한다.
}
profile
@studing_dobby

0개의 댓글