![]() 위 그림에서 보면 Throwable 은 모든 클래스 중 최상위 계층에 있는 Object를 상속받는다. 그리고 Throwable 를 상속하는 예외 클래스는 Exception 클래스 // Error 클래스 두 가지이다. 그런데 이름에서 보듯 Error 에러!! 단순히 예외(Exception)라고 하기에는 심각한 오류를 표현하기 위해 정의된 클래스이다. 즉 이 Error 는 프로그래머가 정의하는 클래스가 아닌 프로그램의 실행을 종료해야 할 정도의 큰 문제(오류)상황을 표현하는 데 쓰인다 JVM이 더 이상 동작 할 수 없는 상황을 알리기 위해 정의된 클래스이고, 이 때는 try - catch 등으로 할 수 있는 문제가 아니다. 한 마디로 말하면 자바에서는 Error에 대한 대책은 없다. 프로그램이 에러에 의해 종료되면...그냥 놔둬야 한다. -_- 하지만 Exception은 프로그램에서 발생할 예외상황에 대해 try - catch문을 적절히 사용함으로써 프로그래머가 오류를 줄일 수 있다. 그렇기 때문에 자바에서는 Exception을 위주로 공부를 한다. 결과적으로 Exception은 모든 예외 클래스의 상위 클래스이다. 따라서 모든 예외 클래스는 Exception 클래스를 상속하여 사용된다. Exception을 상속하는 클래스의 예외 상황이 임의의 메소드 내에서 발생한다면 , 해당 메소드는 반드시 둘 중 한 가지 방법을 선택하여 정의되어야 한다. ① try - catch 구문을 이용하여 메소드 내에서 예외를 처리하도록 정의한다. ② 키워드 throws 를 이용하여 메소드를 호출한 영역으로 예외가 전달되도록 정의한다. 안드로이드에서 사용할 수 있는 형태로 로그를 출력하기 위해서는 다음과 같은 방법을 사용하시면 됩니다. 비슷한 예로 출력할 에러를 문자열 변수로 받고자 할때도 쓸 수 있습니다.
// 파일이 존재하지 않는 경우에 대한 예외 처리 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: 출력문구 at ExThrowException.main(ExeThrowException.java:6) JAVA 코딩시 가장 많이 사용하는 코드 중 하나가 try { // ... } catch(Exception e){ e.printStackTrace(); } 이다. printStackTrace() 외에도 printStackTrace(PrintWriter writer); 도 존재하고 printStackTrace(PrintStream s); 역시 존재하기 때문에 stackTrace 의 내용을 파일등에 남기는 것은 그리 어려운 일이 아니다. JAVA 예외처리 종류 (Exception) ArthmeticException : 정수를 0으로 나눌때 발생 NullPointException : Null 레퍼런스를 참조할때 발생 ClassCastException : 변환할 수 없는 타입으로 객체를 변환할 때 발생 OutOfMemoryException : 메모리가 부족한 경우 발생 ArrayIndexOfBoundsException : 배열의 범위를 벗어난 접근 시 발생 IllegalArgumentException : 잘못된 인자 전달 시 발생 IOException : 입출력 동작 실패 또는 인터럽트 시 발생 NumberFormatException : 문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시 발생 IllegalStateException : 객체의 상태가 매소드 호출에는 부적절한 경우 ConcurrentModificationException : 금지된 곳에서 객체를 동시에 수정하는것이 감지될 경우 발생 UnsupportedOperationException : 객체가 메소드를 지원하지 않는 경우 발생 사용법은.. 알아서...ㅋㅋㅋ
|
|||||||||||