일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바 내부 클래스
- 자바 try-catch
- Express
- 자바 스트링클래스
- 자바 예제
- Java 추상 메서드
- java super( )
- dbeaver
- Java thorw
- 오라클
- nodejs
- DBMS
- 자바 Wrapper클래스
- Java객체배열
- database
- Java문자열 클래스
- db
- 자바 Random클래스
- Java 내부 클래스
- Java다운캐스팅
- Java업캐스팅
- Java추상클래스
- oracle
- 자바 추상메서드
- 데이터베이스
- 코딩
- 자바 문자열 클래스
- 자바 String클래스
- 자바 제어문
- Java try-catch
- Today
- Total
코딩이란 무엇일까
Java/자바 [20일차] (2)-예외 처리 본문
🌍글을 읽기 전 필자는 아직 코딩을 배우는 단계이므로 글의 내용이 부정확할 수 있습니다.
여러 가지 글과 책, 수업을 바탕으로 정리한 내용이니 알맞지 않은 내용이 있다면 댓글 남겨주시면 수정하겠습니다.
예외 처리
예외 처리(Exception handling)란?
예외가 발생했을 때 이를 적절히 처리하여 프로그램이 비정상적으로 종료되는 것을 막는 방법을 말합니다.
try-catch-finally
예외 발생 시, 적절하게 처리하기 위해 자바에서 제공하는 예외 처리 문법입니다.
[try-catch문 구조]
try{
//예외가 발생할 수 있는 명령
}catch(발생할 수 있는 예외 클래스명){
//예외가 발생했을 시 실행할 명령
}
try-catch문 사용
Scanner sc= new Scanner(System.in);
try {
System.out.print("숫자를 입력해 주세요:");
int cnt =Integer.parseInt(sc.nextLine());
int sum=0;
for(int i=0;i<=cnt;i++) {
sum+=i;
}
System.out.println(sum);
}catch(NumberFormatException e){
System.out.println("잘못된 문자열 입력했습니다.");
System.out.println(e.getMessage());
사용자에게 정수 값을 입력을 받아 0부터 입력받은 값을 더해주는 코드입니다.
하지만 사용자가 정수가 아닌 실수, 문자열과 같이 정수가 아닌 값을 입력하면
NumberFormatException 이 발생하기 때문에
catch문에 NumberFormatException e을 작성해 주었습니다.
추가적으로 e.getMessage( ) 메서드는 예외 정보를 문자열로 반환합니다.
출력 결과
catch문에 ( ) 안에는 Exception e가 올 수도 있습니다.
Exception클래스는 모든 예외 클래스의 상위 클래스이기 때문에 가능합니다.
다중 catch문
위의 try-catch문 사용 코드를 보면
위의 코드를 보면
정수값을 입력받아야 하는데 정수 값이 아닌 다른 값이 오는
NumberFormatException 이 발생할 수도 있고
아무 값도 작성을 하지 않고 변수를 참조하면
NullPointerException이 발생할 수도 있습니다.
이와 같이 try문에는 다양한 예외가 발생할 수 있습니다.
이 경우 발생되는 예외별로 예외 처리 코드를 다르게 하기 위해서
다중 catch블록을 작성할 수 있습니다.
try{
//예외가 발생할 수 있는 명령
}catch(발생할 수 있는 예외 클래스명){
//예외가 발생했을 시 실행할 명령
}
}catch(발생할 수 있는 예외 클래스명){
//예외가 발생했을 시 실행할 명령
}
다중 catch 순서
다중 catch블록을 작성할 때 주의해야 할 점은
상위 예외 클래스가 하위 예외 클래스보다 아래쪽에 위치해야 합니다.
예를 들어 모든 예외의 상위 클래스인 Exception을
다중 catch문의 맨 위에 작성한다면 어떠한 에러가 나도 첫 번째 catch블록만 실행되고
아래의 catch블록은 실행되지 않게 되기 때문에 주의해주어야 합니다.
finally
finally는 try문에서 오류가 나든 안 나든 실행되는 블록입니다.
생략이 가능하며 항상 실행할 내용이 있을 경우에만 finally 블록을 작성해주면 됩니다.
finally 사용
Scanner sc= new Scanner(System.in);
try {
System.out.print("숫자를 입력해 주세요:");
int cnt =Integer.parseInt(sc.nextLine());
int sum=0;
for(int i=0;i<=cnt;i++) {
sum+=i;
}
System.out.println(sum);
}catch(NumberFormatException e){
System.out.println("잘못된 문자열 입력했습니다.");
System.out.println(e.getMessage());
}finally {
System.out.println("오류가 나든 안나든 실행해요");
}
출력 결과
'국비지원수업' 카테고리의 다른 글
Database[24일차] (1)-WHERE절 (0) | 2022.11.24 |
---|---|
Java/자바[20일차] (3)-File클래스 (0) | 2022.11.19 |
Java/자바 [20일차] (1)-예외 (0) | 2022.11.19 |
Java/자바 [19일차] (2)-람다식 (0) | 2022.11.15 |
Java/자바[19일차] (1)-StringBuffer클래스,StringTokenizer클래스 (0) | 2022.11.15 |