예외
오동작이나 결과에 악영향을 미칠 수 있는 실행 중 발생한 오류
• 정수를 0으로 나누는 경우
• 배열보다 큰 인덱스로 배열의 원소를 접근하는 경우
• 존재하지 않는 파일을 읽으려고 하는 경우
• 정수 입력을 기다리는 코드가 실행되고 있을 때, 문자가 입력된 경우
자바에서 예외 처리 가능
• 예외 발생 → 자바 플랫폼 인지 → 응용프로그램에 전달
• 응용프로그램이 예외를 처리하지 않으면, 응용프로그램 강제 종료
예외 처리
• 예외가 발생할 때 대응하는 프로그램 코드 - try-catch-finally문 사용
try {
예외가 발생할 가능성이 있는 실행문(try 블록)
}
catch (처리할 예외 타입 선언) {
예외 처리문(catch 블록)
}
finally {
예외 발생 여부와 상관없이 무조건 실행되는 문장
(finally 블록)
}
finally는 생략하고 계속해서 코드를 작성해도 똑같은 작업을 수행한다.
EX) zero division 예외 처리 - Arithmetic Exception
import java.util.Scanner;
public class DevideByZeroHandling {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.print("나뉨수를 입력하시오:");
int dividend = scanner.nextInt(); // 나뉨수 입력
System.out.print("나눗수를 입력하시오:");
int divisor = scanner.nextInt(); // 나눗수 입력
try {
System.out.println(dividend + "를 "+ divisor + "로 나누면 몫은 “ + dividend/divisor + "입니다.");
break; // 정상적인 나누기 완료 후 while 벗어나기
}
catch(ArithmeticException e) { // ArithmeticException 예외 처리 코드
System.out.println("0으로 나눌 수 없습니다! 다시 입력하세요");
}
}
scanner.close();
}
}
실행 결과
나뉨수를 입력하시오:100 나눗수를 입력하시오:0 0으로 나눌 수 없습니다! 다시 입력하세요 나뉨수를 입력하시오:100 나눗수를 입력하시오:5 100를 5로 나누면 몫은 20입니다 |
'CS > JAVA' 카테고리의 다른 글
자바 - 추상클래스&인터페이스 (0) | 2022.04.21 |
---|---|
자바 - 오버로딩, 오버라이딩 (0) | 2022.04.20 |
자바 - 업캐스팅 & 다운캐스팅 (0) | 2022.04.13 |
자바 - 상속 (0) | 2022.04.10 |
자바 - static & final (0) | 2022.04.10 |