예외 처리 : try ~ catch문
int c;
try {
c = 4 / 0;
} catch(ArithmeticException e){
c = -1;
}
System.out.println(c);
try : 예외가 발생할 가능성이 있는 코드를 포함
catch : try에서 발생한 예외를 처리한다
위 코드에서
ArithmeticException e는 ArithmeticException 클래스의 예외 객체이다
finally :
int c;
try {
c = 4 / 0;
sample.shouldBERun();
} catch(ArithmeticException e){
c = -1;
} finally {
sample.shouldBERun();
}
System.out.println(c);
finally문은 예외 발생 여부와는 상관없이 해당 구문을 실행 시킨다
RuntimeException :
public void sayNick(String nick){
if ("바보".equals(nick)){
return; // 바보라는 문자열이 입력되면 return으로 메서드를 종료해 별명이 출력이 안된다
}
System.out.println("당신의 별명은 " + nick + " 입니다 ");
}
public static void main(String[] args) {
Sample sample = new Sample();
sample.sayNick("바보");
sample.sayNick("야호");
retren; - >
throw new FoolException();
여기서 Foolexption은 RuntimeException을 상속 했다
class FoolException extends RuntimeException
예외는 크게 두 가지 종류가 있다
RuntimeException : 실행 시 발생하는 예외
Exception : 컴파일 시 발생하는 예외
RuntimeException은 발생할 수도 있고 발생하지 않을 수도 있는 경우
Exception : 예측이 가능한 경우에 사용한다
class FoolException extends Exception {
}
public class Sample {
public void sayNick(String nick){
try {
if ("바보".equals(nick)) {
throw new FoolException();
}
System.out.println("당신의 별명은 " + nick + " 입니다 ");
}catch (FoolException e) {
System.err.println("FoolException이 발생했습니다");
}
}
기존 FoolException이 예측이 가능 Exception을 상속하게 되었다
그럼 기존 구문을 컴파일 오류가 발생하게 되는데
catch문에 FoolException e 을 넣고 System.err.println으로 변경
실행 결과 :
FoolException이 발생했습니다
예외 던지기 :
public void sayNick(String nick) throws FoolException {
if ("바보".equals(nick)) {
throw new FoolException();
}
System.out.println("당신의 별명은 " + nick + " 입니다 ");
sayNick 메서드 뒷 부분에 throws라는 구문을 이용하여 FoolException을 위로 보낼 수가 있다
(예외를 뒤로 미루기)
throw : 메서드 내에서 예외를 발생 시키는데 사용한다
throws: 메서드 선언부에서 사용이 되며 해당 메서드가 처리 하지않은 예외를 호출자에게
전달함을 나타낸다
public void sayNick(String nick) throws FoolException
'Java' 카테고리의 다른 글
KH 공공데이터 융합 자바 개발자 양성 교육과정 6월 11일 (1일차) (0) | 2024.06.11 |
---|---|
2024년 6월 11일 KH 교육 전 Java 예습 스레드 (0) | 2024.06.07 |
2024년 6월 11일 KH 교육 전 Java 예습 마무리 : 상속, 생성자 (0) | 2024.06.07 |
2024년 6월 11일 KH 교육 전 Java 예습 추상클래스, static 비교 (0) | 2024.06.07 |
2024년 6월 11일 KH 교육 전 Java 예습 : static, interface, (1) | 2024.06.06 |