Checked Exception은 컴파일을 할 경우에 예측가능한 예외로 ClassNotFoundException, FileNotFoundException 등이 있습니다.
UnChecked Exception은 런타임 시 발생할 수도 있고 발생하지 않을 수 있는 예외로 ArithmeticException, NullpointerException 등이 있습니다.
프로그래밍을 하면서 에러와 예외는 필연적으로 만나게 되는 존재입니다.
잘못된 코딩으로 인해 예외가 발생하더라도 무시하고 다음 코드를 실행하거나 다른 메소드를 호출하는 것처럼 다양하게 사용자가 원하는 예외처리를 할 수 있습니다.
try, catch, finally, throw, throws 다음 키워드를 이용하여 예외처리를 합니다.
① try - catch 구문을 이용하여 메소드 내에서 예외를 처리하도록 정의한다.
② 키워드 throws 를 이용하여 메소드를 호출한 영역으로 예외가 전달되도록 정의한다.
ArthmeticException : 정수를 0으로 나눌때 발생
NullPointException : Null 레퍼런스를 참조할때 발생
ClassCastException : 변환할 수 없는 타입으로 객체를 변환할 때 발생
OutOfMemoryException : 메모리가 부족한 경우 발생
ArrayIndexOfBoundsException : 배열의 범위를 벗어난 접근 시 발생
IllegalArgumentException : 잘못된 인자 전달 시 발생
IOException : 입출력 동작 실패 또는 인터럽트 시 발생
NumberFormatException : 문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시 발생
IllegalStateException : 객체의 상태가 매소드 호출에는 부적절한 경우
ConcurrentModificationException : 금지된 곳에서 객체를 동시에 수정하는것이 감지될 경우 발생
UnsupportedOperationException : 객체가 메소드를 지원하지 않는 경우 발생
// 파일이 존재하지 않는 경우에 대한 예외 처리
catch (FileNotFoundException e) {
String exceptionMessage = textFileName + " 파일 또는 그것의 경로가 존재하지 않습니다.";
Toast.makeText(this.context, exceptionMessage, Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
// 입출력 관련된 예외 처리
catch (IOException e) {
String exceptionMessage = "파일을 읽는 도중에 오류가 발생했습니다.";
Toast.makeText(this.context, exceptionMessage, Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
// 기타 예외 처리
catch (Exception e) {
Toast.makeText(this.context, "알 수 없는 오류입니다.", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
e.getMessage() = 에러 이벤트와 함께 들어오는 메세지를 출력한다.
e.getMessage(): 출력문구
e.toString() = 에러 이벤트의 toString()을 호출해서 간단한 에러 메시지를 확인한다.
e.toString(): java.lang.Exception: 출력문구
e.printStackTrace() = 에러 메세지의 발생 근원지를 찾아서 단계별로 에러를 출력한다.
e.printStackTrace(): java.lang.Exception: 출력문구