JAVA 예외처리(Exception Handling)
예외처리
예외처리를 if문으로 할경우 if문은 보통 자주 사용되는 구문이기 때문에 예외처리와 일반 코드가 구분이 어려움 이 때문에 사용하는 것이 Exception
- try~catch
- try영역에서 나온 예외상황을 catch 부분에서 처리하는 것
- 실행 과정은
- 예외발생 -> 참조값 전달하며 catch영역 실행 -> catch영역 실행 후 try~catch 다음문장 실행
- 예외클래스라는 예외상황을 알리는 클래스들이 있음
- getMessage()
- 예외상황을 알리기 위해서 정의된 모든 예외클래스들이 상속하는 메소드 이며 예외상황의 이유를 알림
- 하지만, 간혹 null만 반환하는 경우가 있으니 의지해선 안됨
- 이미 약속된 예외상황을 알리는 클래스들이 있음
- ArrayIndexOutOfBoundsException : 배열의 접근에 잘못된 인덱스 값을 사용
- ClassCastException : 허용할 수 없는 형변환 연산을 진행
- NegativeArraySizeException : 배열선언 과정에서 배열의 크기를 음수로 지정
- NullPointerException : 참조변수가 null로 초기화 된 상황에서 메소드를 호출
- try 영엑에 둘 이상의 catch 영역 구성 가능
- 이는 catch문이 쓰여진 순서대로 관찰하기 때문에 상위 클래스인 Throwable을 먼저 사용하면 다음 영역에선 실행이 되지않음
- 하지만 순서를 바꾸어서 사용한다면 실행은 가능
- finally
- try 영역으로 일단 들어가면 무조건 실행되는 영역
- 예외의 상황 직접 정의
- Exception 클래스
- 예외를 정의하기위해 상속을 해주는 클래스
- Throwable 클래스의 하위 클래스
- 생성자 호출을 통해서 전달된 문자열을 getMessage의 호출을 통해서 반환
- 메소드의 뒤에 throws를 통해 정의된 클래스에 보냄 -> 그리고 throw excpt를 통해 예외처리 메커니즘을 가동
- 이는 try~catch를 사용하지 않아도 사용가능
- 예외상황이 메소드 내에서 처리되지 않으면, 메소드를 호출한 영역으로 예외 처리가 넘어감을 반드시 명시
- throw에 의해 생성된 예외상황은 반드시 try~catch로 처리 혹은 throws에 의해서 넘겨져야 한다.
- 계층도
- Throwable
- Error : 단순히 예외가 아닌 심각한 오류상황 표현
- Exception
- Exception는 모든 예외 클래스의 상위 클래스(Error 제외)
C#에는 Error class가 없다.
답글삭제