예외처리
: 프로그램 실행 중 어떤 원인에 의해 오작동하거나 비정상적으로 종료되는 경우 -> 프로그램 에러 또는 오류
① 컴파일 에러 : 컴파일 실행 중 나타나는 에러
② 런타임 에러 : 실행 중 나나타는 에러
③ 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것(프로그램 종료는 안함)
② 런타임 에러
- 에러 : 코드에 의해서 수습될 수 없는 심각한 오류
- 오류 : 코드에 의해서 수습될 수 있는 미약한 오류
- 예외 계층 구조
* printStacktTrace() 와 getMessage()
- printStacktTrace() : 예외발생 당시 호출스택에 있었떤 메서드의 정보와 예외메시지 화면에 출력
- getMessage() : 예외클래스의 인스턴스에 저장된 메시지 얻을 수 있음
예외처리 방법1
1. try-catch 문
try {
// 예외가 발생할 가능성이 있는 문장
} catch (Exception1 e1) {
//Exception1이 발생할 경우 처리하기 위한 문장
} catch (Exception2 e2) {
//Exception2가 발생할 경우 처리하기 위한 문장
}
-> try블럭 내에서 예외가 발생한 경우) 발생한 예외와 일치한 예외가 catch문에 있으면 그 catch{}안에 있는 코드 수행감
-> try블럭 내에서 예외가 발생하지 않은 경우) try -catch문 빠져나가 수행
- 하나의 try 블럭 안에는 예외의 종류와 일치하는 단 한개의 catch블럭만 수행되면 없으면 try블럭을 빠져나간다.
- 한 클래스 안에 여러개의 try-catch 문이 사용 가능
- 자바의정석 예제 Chapter8 Ex8_6참고
class ExceptionTest{
public static void main(String[] args) {
System.out.println(1); //1
System.out.println(2); //2
try {
System.out.println(3); //3
System.out.println(0/0); //ArithmeticException 오류
System.out.println(4);
} catch(Exception e) {
System.out.println(5); //5
}
System.out.println(6); //6
}
}
2. 예외 발생하기
: 키워드 'throw'를 이용해서 프로그래머가 고의로 예외발생시킬 수 있음
- 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체 만든 다음
Exception e = new Exception("고의로 발생시킴")
-> 'throw'를 이용해 예외 발생
throw e
3. Finally { }
: Finally {} 은 예외의 발생여부에 상관없이 실행되어야 할 코드를 포함시킬 모적으로 사용.
: try - catch 문 '마지막'에 위치
4. 예외 선언하기(떠넘기기)
: 메서드가 호출시 발생가능한 예외를 호출시키는 쪽에 알리는 것
: Exception은 모든 예외의 최고 조상으로,, 모든 종류의 예외에 떠넘길 수 있다.
5. 사용자 정의 예외만들기
: 기존에 정의된 예외 클래스 외에 프로그래머가 새로운 예외 클래스를 정의하여 사용
:Exception, RuntimeException 클래스 상속 받아 클래스를 만듦
class ImadeException extends Exception { // 새로운 예외클래스 ImadeException을 기존 Exception으로부터 상속
ImadeException(String message) { //문자열을 매개변수로 받는 생성자
super(message); //조상 생성자 호출
}
}
6. 예외 되던지기
: 예외처리 후에 다시 예외 발생
: 호출한 메서드와 호출된 메서드 양쪽에서 모두 처리해줘야 할 작업이 있을 때 사용(부분 처리할 때)
public ExceptionReThrowing {
public static void main(String[] args) {
try { //main의 예외처리 3
method1(); //method1 으로 이동
}catch (Exception e) {
System.out.println("main에서 예외 처리");
}
}
static void method1() throws Exception{ //예외 선언
try { //method1 의 예외처리1
throw new Exception() ;
}catch (Exception e) {
System.out.println("method1에서 예외 처리");
throw e; //다시 메인으로 예외 발생2
}
}
}
'JAVA' 카테고리의 다른 글
JAVA_컬렉션 프레임워크(List) (0) | 2021.08.05 |
---|---|
JAVA_날짜와 시간 (0) | 2021.08.04 |
JAVA_인터페이스 (0) | 2021.08.02 |
JAVA_추상화 (0) | 2021.08.01 |
JAVA_다형성 (0) | 2021.08.01 |
댓글