일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DB
- 조회
- array
- Annotaion
- Reader
- 16bit
- driver
- Join
- transient
- InputStream
- JDBC
- stream
- Connection
- Transaction
- 상속
- set
- 자바
- select
- 다이얼로그
- Serializable
- 예외처리
- Oracle
- 난수
- statement
- swing
- 8bit
- 오라클
- java
- DB연동
- where
- Today
- Total
오버플로
[Java] Exception Handling - Try~catch / Finally 본문
~예외처리 이어서~
try ~ catch (+finally)
- 던져진(throws) 예외를 잡거나, 발생된(throw) 예외를 잡아서 처리하는 문법
- try ~ catch 블록 안에서 발생한 예외는 해당 catch로 가서 처리된 후 finally 수행 후 나옴
(*finally는 반드시 실행되어야 할 코드가 있을 때 사용함)
- 문법) try { *예외 발생 예상 코드 // 실행할 코드
} catch ( 예외처리클래스명 객체명 ) {
예외가 발생했을 때 처리할 코드 // 예외가 발생해야 수행됨
} catch (Exception e) { // 예외처리 최상위 부모 클래스로, 놓친 예외를 잡을 수 있음.
예외가 발생했을 때 처리할 코드 }
} finally { // 선택적
반드시 실행되어야 할 코드}
* catch는 예외처리클래스의 상속관계에 따라 자식클래스를 먼저 작성하고 부모클래스를 나중에 작성하자
* 예외 발생 예상 코드 : method를 보면 method가 날리는 예외 정보를 확인할 수 있음
Ex) Integer Class의 parseInt method는 NumberFormatException을 throws하고 있음
(=이 예외가 발생할 수 있다)
> NumberFormatException은 RuntimeException이었기 때문에 try~catch를 하지 않더라도 쓸 수 있음
CompileException이었으면 반드시 예외처리를 해주었어야 한다!!
# 오늘의 코딩 #
- RuntimeException을 확인해보자
/**
* RuntimeException에 대해 처리
* @author user
*/
public class UseRuntimeException {
public static void main(String[] args) {
// main method arguments 두개를 입력 받아 나눈 결과를 출력하는 일
try {
int num = Integer.parseInt(args[0]); //ArrayIndexOutOfBoundsException, NumberFormatException
int num2 = Integer.parseInt(args[1]); //ArrayIndexOutOfBoundsException
int result = 0;
result = num / num2; // ArithmeticException
System.out.println(num + "/" + num2 + "=" + result);
} catch (ArrayIndexOutOfBoundsException aioobe) { // 입력값 안 넣으면 발생
System.err.println("입력값은 2개 이어야 합니다.");
System.err.println("사용 예) java UseRunTimeException 값1 값2");
} catch (NumberFormatException nfe) {
System.err.println("입력값은 숫자 형태이어야 합니다.");
System.err.println("사용 예) java UseRunTimeException 숫자 숫자");
} catch (ArithmeticException ae) {
System.err.println("0으로 나눌 수 없습니다.");
} catch (Exception e) { // 예외처리 객체의 최상위 부모. 모든 예외를 다 잡을 수 있음
System.err.println("개발자가 인지하지 못 한 예외");
} finally {
System.out.println("무조건 실행되어야 하는 코드");
}
}// main
}// class
# 출력 결과 #
args 기입 종류에 따라서 catch문이 잘 실행되는 것을 확인!
finally에 있는 "무조건 실행되어야 하는 코드" 도 확인 ㅎㅎㅎ
'Java' 카테고리의 다른 글
[Java] IO(Input/Output) Stream - 8bit Stream, 16bit Stream / File Class (0) | 2021.08.29 |
---|---|
[Java] Exception Handling - throws / throw / 사용자 정의 예외처리 Class (0) | 2021.08.26 |
[Java] Exception Handling (0) | 2021.08.24 |
[Java] File Dialog (0) | 2021.08.23 |
[Java] JOptionPane / JDialog (0) | 2021.08.22 |