Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- access modifier
- dbeaver
- identityHashCode
- 셔뱅
- pycharm
- constructor
- 내부클래스
- Inbound
- singletone
- 깊은 복사
- Wrapper class
- shebang
- has-a
- finalize
- 엔드포인트
- parameter group
- down casting
- 스트림
- extends
- public static final
- generic programming
- arraycopy
- 자바
- node.js
- Stream
- lambda
- 얕은 복사
- 파이참
- Up Casting
- Java
Archives
- Today
- Total
٩(๑•̀o•́๑)و
20200311 - 예외와 예외처리 본문
오류
- 컴파일 오류 : 프로그램 코드 작성 중 발생하는 문법적인 오류
- 실행 오류 : 실행중인 프로그램이 의도 하지 않은 동작을 하거나(bug) 프로그램이 중지되는 오류(runtime error)
- 자바는 예외 처리를 통하여 프로그램의 비정상적인 종료를 막고 log를 남길 수 있음
오류와 예외 클래스
- 시스템 오류(Error) : 가상 머신에서 발생, 프로그래머가 처리할 수 없음. 동적 메모리를 다 사용한 경우, stack over flow등
- 예외(Exception) : 프로그램에서 제어할 수 없는 오류. 읽으려는 파일이 없는 경우, 네트워크나 소켓 연결 오류 등. 자바프로그램에서는 예외에 대한 처리를 수행 함
- Error, Exception -> Throwable
- 예외 클래스 : 모든 예외 클래스의 최상위 클래스는 Exception 클래스
- 입출력 예외 처리(IOException) : FileNotFoundException, SocketException -> IOException -> Exception
- 실행 오류 예외처리(RuntimeException) : ArithmeticException(나눌시 분모가 0), IndexOutOfBoundsException, NullPointerException -> RuntimeException -> Exception
try-catch문으로 예외 처리하기
try {
예외가 발생할 수 있는 코드 부분
} catch(처리할 예외 타입 e){
try블록 안에서 예외가 발생했을때 수행되는 부분
}
try-catch-finally 문으로 예외 처리하기
try {
예외가 발생할 수 있는 코드 부분
} catch(처리할 예외 타입 e){
try블록 안에서 예외가 발생했을때 수행되는 부분
} finally{
예외 발생 여부와 상관없이 항상 수행되는 부분. 리소스를 정리하는 코드를 주로 사용
}
try-with-resources 문
- 리소스를 자동으로 해제 하도록 제공해주는 구문
- 해당 리소스가 AutoCloseable을 구현한 경우 close()를 명시적으로 호출하지 않아도 try{} 블록에서 오픈된 리소스는 정상적인 경우나 예외가 발생한 경우 모두 자동으로 close()가 호출 됨
- java7 부터 제공됨
- FileInputStream의 경우 AutoCloseable을 구현하고 있음
AutoCloseable 인터페이스
예외 처리 미루기
- throws 를 사용하여 예외처리 미루기
- try{} 블록으로 예외를 처리하지 않고, 메서드 선언부에 throws 를 추가
- 예외가 발생한 메서드에서 예외 처리를 하지 않고, 이 메서드를 호출한 곳에서 예외 처리를 한다는 의미
- main()에서 throws를 사용하면 가상머신에서 처리 됨 -> 에러를 핸들링하는게 아님.
다중 예외 처리하기
- 하나의 try{} 블록에서 여러 예외가 발생하는 경우 catch{} 블록 한곳에서 처리하거나 여러 catch{}블록으로 나누어 처리할 수 있음.
- 가장 최상위 클래스인 Exception 클래스는 가장 마지막 블록에 위치해야함 - 디폴트 익셉션이라고도함. 모든 Exception들은 최상위 클래스인 Exception으로 업캐스팅이 가능함. 따라서 Exception 클래스는 반드시 가장 마지막에 위치해야함. 위로 올릴경우 나머지 catch문에서 unreachable error발생.
사용자 정의 예외
- JDK에서 제공되는 예외 클래스 외에 사용자가 필요에 의해 예외 클래스를 정의하여 사용
- 기존 JDK클래스에서 상속받아 예외 클래스를 만듦. 보통은 Exception을 상속받아 생성
- throw 키워드로 예외를 발생시킬 수 있다.
- Ex. 매개변수로 전달된 아이디가 null이거나 8자 이하 20자 이상인 경우 예외를 발생시키는 예외 클래스 작성
'Java' 카테고리의 다른 글
20200316 - Thread (0) | 2020.03.17 |
---|---|
20200311,20200315 - 자바 입출력 스트림 (0) | 2020.03.16 |
20200309, 20200310 - 내부 클래스, 람다식, 스트림 (0) | 2020.03.11 |
20200308 - 컬렉션 프레임워크 (0) | 2020.03.09 |
20200308 - Generic 프로그래밍 (0) | 2020.03.08 |