코딩을 하다보면 여러가지의 오류를 만날수 있습니다 오작동을 하거나 비정상적으로 종료되는 경우 가 있죠
컴파일 에러 컴파일 시에 발생하는 에러입니다
런타임 에러 실행 시에 발생하는 에러 입니다
논리적 에러 실행은 되지만, 의도와 다르게 동작하는 것을 말합니다
에러 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 입니다.
예외 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 입니다.
예외처리하기 try - catch문
예외처리의
정의 프로그램 실행 시 발생할 수 있는 예외에 대비한 코드를 작성하는 것
목적 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것
1.컴파일러 에러
프로그램 에러 2. 런타임 에러 Error : 심각한 에러
Exception :미약한 에러
Exception rm wkthsemf
RuntimeExcaption과 그 자손들
try-catch문에서의 흐름
printStackTrace()와 getMessage()
printStackTrace() 예외발생 당시의 호출스택(Call Stack) 에 있었던 메서드의 정보와예외 메시지를 화면에 출력합니다
getMessage() 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있습니다.
멀티 catch 블럭
내용이 같은 catch 블럭을 하나로 합친 것입니다.
try{
....
catch (ExceptionA | ExceptionB e) {
e.printStackTrace();
}
}
예외 발생시키기
1.먼저 . 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음
Exception e = new Exception ("고의로 발생시켯음");
2.키워드 throw를 이용해서 예외를 발생시킵니다
throw e;
메서드에 예외 선언하기
메서드에 예외르르 선언하려면 메서드의 선언부에 키워드 throws를 사용해서 메서드 내에서 발생할 수 있는
예외를 적어주기만 하면 됩니다. 그리고 예외가 여러 개일 경우에는 쉼표(.)로 구분합니다.
void method() throws Exception,Exception2,....ExceptionN{
//메서드의 내용
}
void method() throws Exception(모든 예외의 최고 조상){
}
}
finally블럭
발생여부에 상관없이 실행되어야할 코드를 포함시킬 목적 으로 사용됩니다.
try {
//예외가 발생할 가능성이 있는 문장들을 넣습니다.
}catch (Exception el){
//예외처리를 위한 문장을 적습니다
} final {
//예외의 발생여부에 관계없이 항상 수행되어야하는 문장들을 넣습니다
//finally블럭은 try-catch문의 맨 마지막에 위치해야합니다.
}
사용자정의 예외 만들기
예외 던지기
한 메서드에서 발생할 수 있는 예외가 여럿인 경우 몇 개는 try -catch문을 통해서 메서드 내에서 자체적으로 처리하고, 그 나머지는 선언부에 지정하여 호출한 메서드에서 처리하도록 함으로써 양쪽에서 나눠서 처리되도록 할 수 있습니다.
연결된 예외