2024. 10. 20. 10:44ㆍjava
에러(error):
- 시스템 에러: 컴퓨터의 오작동으로 인해 발생하는 에러
- 컴파일 에러: 프로그램 실행 전 소스코드상의 문법적인 문제로 발생하는 에러
- 런타임 에러: 프로그램 실행 중 발생하는 에러 문법적으로는 문제가 없는데 발생
→ 개발자가 예측 가능한 경우 처리하지 않았을 때 발생! - 논리적 에러: 소스 코드 상 문제도 없고, 실행했을 때도 문제가 발생하지 않음
(로지컬 에러) 다만, 의도와는 다르게 동작함 (기획/설계를 잘 못 했을 때)
프로그램 실행 시 발생하는 예외 (RuntimeException)
| 예외 종류 | 에러 발생 원인 |
| NullPointException | 주소값 객체 참조 에러 (Null 값 참조) |
| IOException | 입출력 에러 (파일 없음, 접근불가 등) |
| OutOfMemoryException | 메모리 부족 |
| ArithmeticException | 나누기 연산 0으로 나눌 경우 |
| ArrayIndexOfBoundsException | 배열 index 범위 초과 |
| NumberFormatException | 문자열을 숫자 변환시 발생 |
| ClassCastException | 허용할 수 없는 형변환 진행 |
| IllegalArgumentException | 인자 오류 |
| NegativeArraySizeException | 배열 크기가 음수 |
[ 예외처리 방법 ]
: try ~ catch 문
[ 표현법 ]
try {
(num1 / num2) → 예외가 발생할 법한 구문
catch(발생할예외클래스명 변수명) { → 매개변수
}
try {
System.out.println("나눗셈 결과: " + (num1 / num2));
System.out.println("올바른 정수값이 입력되었습니다.");
} catch(ArithmeticException e) {
e.printStackTrace(); // 어디서 어떻게 예외가 발생해서 오류발생했는지 확인 가능함
}
System.out.println("프로그램 종료");
}
public void method1() { // 다중 catch문: try하고 catch 계속 넣을 수 있음.
Scanner sc = new Scanner(System.in);
System.out.println("정수를 입력해주세요. (0은 제외) > ");
try {
int num = sc.nextInt();
// InputMismatchException
System.out.println("100을 입력한 정수로 나눈 결과: " + (100 / num));
// ArithmeticException
} catch(InputMismatchException e) { // 1. 먼저 입력받은 값이 정수인지 판단
System.out.println("숫자로 된 정수값만 입력해주세요");
} catch(ArithmeticException e) {
System.out.println("0입력하지 말아주세요");
}
System.out.println("프로그램 종료");
}
'java' 카테고리의 다른 글
| IO (input / output) 입/출력, warrper래퍼클래스 (0) | 2024.10.21 |
|---|---|
| 자바 String 클래스 (1) | 2024.10.20 |
| 오버로딩(overloading), 오버라이딩(overriding), 상속 (1) | 2024.10.18 |
| 클래스변수 & 인스턴스변수 & 지역변수 (1) | 2024.10.18 |
| 접근제한자(Access Modifier) & 캡슐화 (1) | 2024.10.18 |