728x90
try ~ catch ~ finally
try {
예외 발생 가능성이 있는 코드
} catch(예외 종류) {
해당 예외 발생시 실행할 코드
} finally {
예외가 발생하든 안하든 무조건 실행할 코드
}
if ~ else if ~ else 와 비슷하다.
try 문에 예외가 발생할 수 있는 코드를 넣고, 예외가 발생할 경우 대처 방안을 catch에 넣는다.
각 예외 종류에 따라 다르게 처리하고 싶으면 else if() 처럼 catch()를 여러 개 둘 수 있다.
여기까지는 if문과 똑같지만 마지막이 다르다.
if문의 경우, 앞에서 조건이 해당되는경우 마지막 else문은 실행하지 않지만,
try문의 finally는 앞에서 실행이 다 된 이후에 무조건 finally문을 실행한다.
catch문에는 예외발생시 실행할 코드를 넣는데 보통 어떤 예외인지 출력하는 코드를 작성한다.
1) e.getMessage() : 예외 발생 원인
2) e.toString() : 예외 종류 + 예외 발생 원인
3) e.printStackTrace(); 예외 종류 + 예외 발생 원인 + 발생 위치
System.out.println으로 출력하지 않아도 출력된다.
try {
String str = null;
System.out.println(str.length());
} catch(NullPointerException e) {
System.out.println("1번: " + e.getMessage());
System.out.println("2번: " + e.toString());
e.printStackTrace();
}
throws 예외 던지기
예외 발생에 대한 책임을 자신을 호출하는 다른 함수에게 던진다.
다른 함수에게 책임을 던짐으로써 나 자신은 예외 처리에 대한 책임이 없어진다.
접근제한자 리턴타입 메소드이름() throws 예외클래스명 { }
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(bf.readLine());
int count = 0;
}
사용자 정의 예외
접근제한자 리턴타입 메소드이름() throws 예외 {
throw new 예외("예외 메시지");
}
입력값이 0~100이외의 값을 입력하면 외예를 발생시키려한다.
public static void grade(int score) throws Exception{
if(score < 0 || score > 100) {
throw new Exception("점수 입력 오류");
// throw키워드로 사용자 정의 예외를 처리한다.
}
}
public static void main(String[] args) {
int score = 101;
try {
grade(score);
} catch (Exception e) {
// 입력이 0보다 작고 100보다 크면
System.out.println(e.getMessage()); // "점수 입력 오류" 출력
}
}
728x90
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
JAVA) List<Map<String, Object>> 반복문 돌리기 (0) | 2023.03.24 |
---|---|
JAVA) 자바 Math.ceil 자세히 알아보기(올림, 소수점 버리기) (0) | 2022.05.17 |
JAVA) 오류와 예외, 예외, 오류 메세지 보는 방법 (0) | 2022.03.14 |
JAVA) 인터페이스(interface) 정의, 사용 이유 (0) | 2022.03.03 |
JAVA) 자바 추상화(abstract) (0) | 2022.02.28 |