월루를 꿈꾸는 대학생
CH8 예외처리 본문
1. 예외처리
1.1 프로그램 오류
- 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료 --> 프로그램 에러 혹은 오류
컴파일 에러 : 컴파일 시에 발생하는 에러
런타임 에러 : 실행 시에 발생하는 에러
논리적 에러 : 실행은 되지만 의도와 다르게 동작하는 것
런타입 발생 시
에러 : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
예외 : 프고르ㅐㅁ 코드에 의해서 수습될 수 있는 다소 마약한 오류
1.2 예외 클래스의 계층구조
Exception 클래스들 : 사용자의 실수와 같은 외적 요인으로 인해 발생 예외 -> checked
RuntimeException 클래스들 : 프로그램의 실수로 벌생하는 예외 - unchecked
1.3 예외처리하기 try-catch 문
예외처리란 ?
- 프로그램 실행시 발생할 수 있는 예기치 못한 예외에 의한 발생에 대비한 코드 작성
- 프로그램의 비정상적인 종료를 막고 정상적인 상태 유지하도록
** 에러와 예외는 모드 런타임시에 발생하는 오류
random() 으로 0이 나와서 오류 출력
이런 걸 막기 위해서 예외처리 구문을 추가한다
1.4 try-catch 문에서의 흐름
try블럭 내에서 발생한 경우
1. 발생한 예외와 일치하는 catch블럭이 있는지 확인
2. 일치하는 catch 블럭을 찾으면 그 블럭 내의 문장을 수행하고 전체 try-catch문을 빠져나가서 다음 행 수행
** 즉 예외발생 후에 바로 catch문으로 감 ...!
3. 만약 catch 문 없으면 예외처리 불가
try 블럭 내에서 예외가 발생하지 않은 경우
1. catch 블럭을 거치지 않고 try-catch 문을 빠져나가서 수행 계쏙함
printStackTrace .. getMesaage()
예외 클래스의 인스턴스에 발생한 예외에 대한 정보가 printStackTrace .. getMesaage() 을 통해 얻을 수 있음
printStackTrace .. getMesaage() 함수를 통해 접근해서 메세지 출력이 가능 단! try - catch 문에서 가능
멀티 catch 블럭
catch 블럭을 | 사용해서 하나의 catch 블럭을 합칠 수 잇는 것
멀티 catch는 하나의 catch 블럭으로 여러 예외를 처리하는 것
1.6 예외 발생시키기
1. 먼저 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만듦
Exception e = new Exception (" 발생시킬 메세지 ");
2. 키워드 throw를 이용해서 예외발생
throw e ;
1.7 메서드에 예외 선언하기
예외를 메서드에 선언하는 방법 -> 예외를 처리하는 것이 아니라 호출한 메서드로 전달하는 것
메서드 선언부에 키워드 throws 사용
** 메서드 내에서 발생한 예외를 자체적으로 처리하지 않고 호출한 메서드에게 예외를 처리하라고 떠넘기는 것
void method() throws Exception1, Esception2 , ... ExceptionN {
// 메서드 내용
}
** 예외 발생시키는 키워드 throw // 예외 메서드 선언시 사용하는 throws
예외가 발생한 메서드 내에서 자체적으로 처리해도 되는 것은 메서드 내에서 try - catch 문을 사용해서 처리하고
메서드에 호출 시 넘겨받아야할 값을 다시 받아야할 경우 즉 메서드 자체해결 불가 경우 예외를 메서드에 선언해서 호출한 메서드에서 처리
1.8 finally 블럭
finally 블럭은 발생여부에 상관없이 실행되어야할 코드
1.11 예외 되던지기
한 메서드에서 발생할 예외가 여럿인 경우 몇 개는 try-catch 에서 처리
나머지는 선언부 지정한 호출 메서드 처리
즉 양쪽에 나누어 처리
1. try - catch 문 사용해서 예외 처리
2. catch 문에서 필요한 작업 행한 후 throw 로 다시 예외 발생
3. 호출한 메서드에게 전달 후 해당 try-catch에서 다시 예외처리
즉 양쪽 모두 처리를한다
'Programing > Java' 카테고리의 다른 글
ch9 java api (0) | 2021.05.09 |
---|---|
ch 8 알고리즘 (0) | 2021.04.18 |
ch7-2 객체 (0) | 2021.04.11 |
7_1 알고리즘 (0) | 2021.04.04 |
7-1 객체지향 (0) | 2021.04.04 |