티스토리 뷰
예외와 오류
- 프로그램 실행 중 예기치 못한 사건을 예외라고 한다. 예외 상황을 미리 예측하고 처리하는 것을 예외처리라고 한다.
- 기본적으로 런타임 시점에서 발생하는 오류는 에러(error)와 예외(exception)으로 나뉜다.
에러(Error)
: 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverflowError)와 같이
일단 발생하면 복구할 수 없는 심각한 오류
예외(exception)
: 인자값 Null 에러NPE(NullPointException)같은 발생하더라도 수습이 가능한 덜 심각한 오류.
예제 1 >
package mega.backend_onemore.Day30;
import java.io.FileReader;
// 방법 1.
public class ExceptionTest1 {
public static void main(String[] args) {
FileReader fr;
try { // 파일이 존재하지 않는 경우가 있을 수 있음.
fr = new FileReader("test.txt");
int value;
while((value = fr.read()) != -1) {
System.out.println((char)value);
} // read는 읽으려고 할 때 파일이 무조건 있어야 함.
fr.close();
} catch(Exception e) {
System.out.println("에러 발생 : " + e);
// e에서 에러에 대한 정보를 모두 담고 있음.
} finally {
System.out.println("하2 나는 무조건 실행됨");
}
}
}
예제 2>
throw는 통제가 안 됨.
던지고 끝낼 것이니까.
package Day30;
import java.io.FileReader;
// 방법 2.
public class ExceptionTest2 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
FileReader file = new FileReader("a.txt");
int i;
while((i = file.read()) !=-1) {
System.out.println((char) i);
}
file.close();
}
}
예제 3 >
package Day30;
import java.util.Scanner;
import java.util.InputMismatchException;
public class ExcptionTest3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int num = 0;
while(true) { // 계속 입력받을 거니까.
try {
System.out.print("숫자 : ");
num = sc.nextInt();
System.out.println("입력 받은 숫자 : " + num);
break;
}
catch (InputMismatchException e) { // 이상하게 입력을 받은 경우.
sc.nextLine(); // 한 줄 날려버려야 함. 이상하게 입력한 문자를 클리어
// 날리고 나서 다시 받아야함.
System.out.println("올바르게 숫자를 입력하세요.");
}
}
}
}
728x90
반응형
'[개발] - Java > Mega' 카테고리의 다른 글
Day30-31. Thread(쓰레드) (1) 기본 개념 (0) | 2023.04.26 |
---|---|
<보충> Day19. Has 관계 두 번째 예제 설명 슬라이드 파보기 (0) | 2023.04.25 |
Day30-1. 문자열 자르기, 날짜 숫자 등 출력 (0) | 2023.04.24 |
Day28-4. 자료구조 (7) Queue (0) | 2023.04.24 |
Day28-3. 자료구조(6) Map (0) | 2023.04.24 |
Comments