2018년 4월 23일 월요일

(4. 23.) Exception

1. Exception 개요
  -  JVM 실행에 문제가 생긴다면 아무리 견고하게 만들어도 결국 실행불능이 된다.
  -  곧바로 프로그램이 종료되기 때문에 에러와 예외는 동일하다.
  -  하지만 예외는 예외처리를 통해 프로그램 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다.

2. Exception 상속관계도
   - Exception-RuntimeException-IndexOutOfBoundsException-ArrayIndexOutOfBoundsException
  - Throwable-Exception
                     -Error
  - 자바에서는 예외를 클래스로 관리한다.
   - 모든 예외클래스는 Exception을 상속받는다

3.  실행예외는 자바 컴파일러가 체크하지 않는다(RuntimeException -> Unchecked Exception)
   - 경험 & api 의존한 예외처리 코드를 작성해야 한다
   - 자주 발생하는 오류
   NullPointerException
   ArrayIndexOutOfBoundsException: 배열 인덱스 범위 초과
   NumberFormatException: 문자열을 숫자로 변경하다 발생하는 예외
   ClassCastException: 상속관계, 구현관계(interface)에서 억지로 타입 변환을 시도할 경우 발생하는 예외

   - e.getMessage() //역시 보안상 취약
Sysout(“Exception-01”); //보안 테이블을 별도 보관하고 있고, 개발자는 그 예외처리 보안 테이블에 맞게 출력해주는 것이 좋다.

4   예외처리 코드
  - 예외처리 코드(try-catch-finally): 1. 생성자 내부 2. 메소드 내부
try{
//예외 발생 가능 코드 위치
} catch(Exception e){
//try 예외 발생하지 않는 경우 스킵
//try에서 예외 발생하면 즉시 실행을 멈추고 catch로 들어와서 예외 처리 코드를 실행
} finally{
//예외처리, 예외 발생 여부와 상관없이 항상 실행할 내용이 있는 경우 finally블록을 작성해준다.
}
  - try-catch 블록을 사용하는 방법 세 가지
  1  중첩 catch
  2  멀티 catch: | 으로 catch ==> catch (SQLException e1| ClassNotFoundException e) {
  3  inner catch 블록

5 throws, throw


throws: 예외 처리 핸들러 넘김
throw: 예외 처리 객체 생성

6 unchecked Exception vs checked Exception
  -  unchecked Exception: Runtime 시 예외처리
  -  checked Exception: 컴파일시 예외철

7  try-catch-fanally 블록
  - finally은 항상 실행되기 때문에 자원종료 등 예외처리 또는 오류와 상관없이 항상 실행되야 하는 코드 추가

댓글 없음:

댓글 쓰기

[Android Studio] Installation and Make a Layer for Mac OS(High Sierra)

1. download android studio https://developer.android.com/studio/#downloads 2. Make a Shared Resource(String in this case) 3...