| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- C언어
- killport
- 노션자동화
- 백준단계별풀기
- 5000port
- 백준10699
- 백준7287
- 백준11382
- 씨언어
- 백준
- 백준씨언어
- 유니티오류
- 백준단계별로풀어보기
- 코딩
- 유니티에셋
- 백준18108
- 계획노션
- coding
- 자바
- 유니티
- 유니티렌더링
- CPP
- 노션커스텀
- 게임
- C++
- java
- 자바설치오류
- 백준c언어
- 랜더링오류
- 백준정답
Archives
- Today
- Total
동동 개발
자바의 예외처리 본문
예외 (Exception) 처리
- 예외 : 실행 중 발생한 오류
- 예외 발생
- 예외(exception)가 던져졌다(thrown)고 표현
- JVM이 예외 감지, 응용프로그램에게 예외 객체(exception object)를 던짐
- 예외 처리 (exception handling)
- 던져진 예외 객체를 받아서(catch) 적절한 작업 수행
- try-catch-finally문 사용
try-catch-finally문
- try, catch : 반드시 있어야함
- finally : 생략가능
자바의 예외 클래스
- ArithmeticException
- NullPointerException
- ClassCastException
- OutofMemoryError
- ArrayIndexOutOfBoundsException
- IllegalArgumentException
- IOException
- NumberFormatException
- InputMismatchException
예시 : InputMismatchException
package week09final;
import java.util.Scanner;
import java.util.InputMismatchException;
public class prac03_17 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("정수 3개 입력하세요.");
int sum = 0, n =0;
for(int i=0; i<3; i++) {
try {
System.out.print(i+">>");
n = scanner.nextInt();
sum +=n;
}catch(InputMismatchException e) {
System.out.println("정수가 아닙니다. 다시 입력하세요.");
scanner.next();
i--;
}
}
System.out.println("합은 "+sum);
scanner.close();
}
}
throws : 예외 던지기
- 실행 중에 발생한 예외를 호출한 쪽에 던짐
- throws : 메소드가 던질 수 있는 예외를 명세
Unchecked exceptions VS Checked exceptions
- Unchecked exception
- 컴파일러가 예외 대응 여부를 검사하지 않음 -> 컴파일 오류 발생 안함
- Checked exception
- RuntimeException 클래스와 하위 클래스 (Exception 클래스 포함)
- 예외를 catch하거나 throws 선언을 해야함. -> 컴파일 오류 발생
Throwable 클래스
- java.lang 패키지에 속함
- 모든 예외와 오류 클래스의 상위 클래스
- 예외 객체의 속성과 기능을 정의
- 주요 속성
- 메시지
- stack trace : 당시의 스택상태
- 주요 기능
- toString
- getMessage
- printStackTrace
- getStackTrace
예외 객체
- Exception 클래스
- java.lang 패키지
- Throwable 클래스의 하위 클래스
- 예외 객체
- 예외 클래스의 인스턴스
- new Exception(), new ArithmeticException(), ...
- 메시지는 생성자의 인자로..
- ex) new Exception("test exception");
Stack unwinding (스택 되감기)
- 예외가 발생하였으나, catch 되지 않은 경우
- 예외가 바깥 쪽 try 블록으로 던져짐
- 현재 메소드에서 처리가 안되면 호출한 쪽으로 예외를 던지고, 현재 메소드 종료
package week09final;
public class Rethrow {
public static void main(String[] args) {
try {
f();
}catch(Exception ex) {
ex.printStackTrace();
}
System.out.println("This is main.");
}
static void f() throws Exception{
try {
g();
}catch(Exception ex){
System.out.println("exception caught in f()");
throw ex;
}
}
static void g() throws Exception{
throw new Exception("Exception in g()");
//try catch문 없음, 여기서 처리 안하겠다. --> 스택 되감기
}
}
Chained Exception (연결된 예외 객체)
- catch한 예외 객체를 새로운 예외 객체에 연결
- 예외 객체 연결을 위한 생성자
- new Exception(이전 예외 객체)
- new Exception(메세지, 이전 예외 객체)
'Java 공부' 카테고리의 다른 글
| File 클래스 (0) | 2023.12.18 |
|---|---|
| 자바 입출력 스트림과 파일 입출력 (0) | 2023.12.18 |
| [JAVA] 백준 단계별로 풀어보기 : 기하 : 직사각형과 삼각형 편 (0) | 2023.09.12 |
| [JAVA] 명품 자바 프로그래밍 책 공부 1 (0) | 2023.08.20 |
| 자바 JDK JRE 설치 오류 (0) | 2023.03.10 |