Full-Stack 개발자가 되려는 작은 개발자의 블로그
객체 지향 실습 4 본문
예외처리(Exception Handling)
Error(오류)
- 프로그램이 실행 될 수 없는 오류.
- 프로그램이 실행중에 처리 할 수 없음.
Excetpion(예외사항)
- 프로그램이 실행 중에 발생하는 오류
- 수습 코드를 통해 실행 중 해결 할 수 있는 오류
※ 예외 처리란 수습 코드를 작성하여 사전에 예외로 인한 프로그램의 비정상적인 종료를 미연에 방지하는 작업
주요 예외 사항
- ArithmeticException : 수학적으로 해결 할 수 없는 예외
- NullPointerException : 인스턴스가 생성되지 않았다.
- ArrayIndexOutOfBoundsException : 배열 범위 밖을 사용 할 때
- NumberFormatException : 숫자로 변환 할 수 없음.
- IOException : 입출력 제외(파일 입출력 포함)
- SQLException : DB 처리 관련 예외
예외 사항의 처리
- try, catch, finally 구문으로 처리
- try(시도하다)
1. 에외사항이 발생 될 수 잇는(가정) 코드를 작성하는 부분
2. 정상적으로 처리 될 수도 있으며, 코드를 작성 할 때는 잘 처리 될 것으로 생각하며 작성.
- catch(예외사항을 잡아서 처리)
1. try 부분에서 예외사항이 발생되면 처리해야 할 작업 코드를 작성하는 부분.
2. catch 부분은 예외사항에 따라 여러개가 존재 할 수 있음.
- finally(반드시 마지막에 실행)
1. 생략 할 수 있는 부분(예외가 있어도, 없어도)
2. 마지막에 실행되어야 하는 코드를 작성하는 부분.
3. 마지막에 실행 할 작업이 없으면 작성하지 않아도 된다.
try{
.
.
.
실행문
.
.
.
}catch(Exception e){
예외 처리
}finally{
공통 실행문
}
처리 순서
1. 정상적으로 처리 될 경우
▶ try > finally
2. 예외가 발생하는 경우
▶ try > catch > finally
예외처리 방식
1. 메소드 안에서 자체적으로 처리
▶ try~catch 구문 사용
2. 호출한 메소드에서 처리하도록 예외를 넘김
▶ 반환형 메소드() throws 예외사항 { . . . }
▶ 메소드를 호출한 위치에 try, catch를 사용하여 예외를 처리.
Multi-catch
- catch부분은 여러 개를 작성 할 수 있음
try {
//숫자 입력 처리
//나눗셈 처리
} catch(NumberFormatException ne) { //(1)
.... //숫자를 입력해야 합니다.
} catch(ArithmeticException ae) { //(2)
.... //0으로 나눌 수 없습니다.
} catch(Exception e) { //(3)
.... //그 외의 예외사항 처리
}
▶ 마지막에 큰 범위의 예외사항이 와야한다.
나만의 Exception 클래스 만들기
1. Exception 클래스를 상속하여 새로운 클래스(MyException) 작성
2. 작성한 새로운 클래스로 인스턴스를 생성
3. 생성 시 메세지, 에러코드 등 값 추가 throws 뒤에 클래스 이름을 작성
4. 메소드를 호출하는 곳에서 새로운 클래스로 catch 처리. catch 부분에서 새로운 클래스의 정보를 출력 및 처리
class MyException extends Exception{
//에러 코드 저장 필드
private final int ERR_CODE;
public MyException(String msg,int eCode) {
super(msg);
ERR_CODE=eCode;
}
public int getErrCode() {
return ERR_CODE;
}
}
public class ExceptionTest2 {
static void makeException() throws MyException{
//특정 문구를 가진 예외 인스턴스 만들기
MyException myexp=new MyException("페이지를 찾을 수 없습니다.",404);
//만든 예외 던지기
throw myexp;
}
public static void main(String[] args) {
try {
makeException();
} catch (MyException e) {
System.out.println(e.getMessage());
System.out.println("에러코드 " +e.getErrCode());
}
}
}
'강의 정리 > Java' 카테고리의 다른 글
학교 인적 관리 프로그램(SchoolPrj) (0) | 2020.04.18 |
---|---|
객체지향 실습5 (0) | 2020.04.18 |
객체 지향 실습2 (0) | 2020.04.01 |
물품 관리 프로그램(Homeminus) (1) | 2020.04.01 |
가계부 프로그램 (0) | 2020.03.26 |