1. 예외란?
프로그램에 문제가 있는것을 말하며, 예외로 인해 시스템 동작이 멈추는 것을 막는 것을 예외처리 라고한다.
Exception : 개발자가 대처할 수 있음
Error : 개발자가 대처할 수 없음.
Exception
- CheckedException : 예외처리를 반드시 해야하는 경우 (ex 파일시스템, 네트워크 등)
컴파일러가 예외처리 했는지 확인함
- UncheckedException : 예외처리를 개발자의 판단에 맡기는 경우(ex 데이터 오류)
2. Exception 클래스
Exception 클래스의 하위클래스로 대표적으로 NullPointerException, NumberFormatException 등이 있다.
NullPointerException : 객체를 가리키지 않고 있는 레퍼런스를 이용할 때
ArrayIndexOutOfBoundException : 배열에서 존재하지 않는 인덱스를 가리킬 때
등등
3. try ~ catch
try {
예외가 발생할 수 있는 코드
} catch (Exception e) {
예외가 발생했을 때 처리할 코드
}
int i = 10;
int j = 0;
int k = 0;
try {
k = i / j;
System.out.println("test");
} catch (Exception e){
e.printStackTrace();
String msg = e.getMessage();
System.out.println(msg);
}
System.out.println("after Exception");
예시 코드는 0으로 나눗셈 연산을 할 때 발생하는 예외에 대한 소스코드이다.
발생한 예외에 대해서 처리해주었기 때문에 "after Exception" 문자열이 출력된다.
4. 다양한 예외 처리
try {
//예외가 발생할 수 있는 소스코드
} catch (InputMismatchException e){
e.printStackTrace();
} catch (ArrayIndexOutOfBoundException e){
e.printStackTrace();
} catch (Exception e){
e.printStackTrace();
}
5. finally
예외 발생과 관계없이 반드시 실행되는 부분
try {
//예외가 발생할 수 있는 소스코드
} catch (InputMismatchException e){
e.printStackTrace();
} catch (ArrayIndexOutOfBoundException e){
e.printStackTrace();
} catch (Exception e){
e.printStackTrace();
} finally {
System.out.println("반드시 실행되는 부분!");
}
ex) 네트워크 연결이나 파일을 열었을때는 반드시 연결을 끊거나 닫아줘야하기 때문에 finally 에서 해주어야한다!
6. throws
예외 발생 시 예외 처리를 직접하지 않고 호출한 곳으로 넘긴다.
//호출부이자 처리부
MainClass m = new MainClass();
try {
m.firstMethod();
} catch (Exception e) {
e.printStackTrace();
}
//넘김
public void firstMethod() throws Exception { //호출한 곳으로 넘김
secondMethod();
}
//예외 발생하는 부분
public void secondMethod() throws Exception { //firstMethod 로 넘김
int num = 10 / 0;
}
728x90
반응형
'개발자 :-) > Java' 카테고리의 다른 글
[Java] Collection (0) | 2022.09.04 |
---|---|
[Java] 문자열 클래스 (0) | 2022.09.04 |
[Java] 람다식 (0) | 2022.09.04 |
[Java] 추상클래스 (0) | 2022.09.03 |
[Java] 인터페이스 (0) | 2022.09.03 |
댓글