개발 공부/Java
[Java] Exception(예외 처리)
훌룽이
2023. 1. 23. 10:20
자바에서 일어날 수 있는 Exception은 에러와 예외가 있다. 일단 에러는 하드웨어의 오동작 또는 고장으로 인한 오류를 의미하고 에러가 발생되면 프로그램을 종료한다. 또 정상 실행 상태를 돌아갈 수 없다. 예외는 사용자의 잘못된 조작된 또는 개발자의 잘못된 코딩으로 인한 오류를 의미한다. 예외가 발생되면 프로그램을 종료되고 예외 처리를 추가하면 실행 상태로 돌아 갈 수 있다.
개발자의 프로그래밍으로 인한 에외는 예외처리를 통해 IDE에서 원활하게 코드를 돌아가게 할 수 있다.
try 문에서 예외가 일어날 것 같은 코드를 작성하고 catch 문에서 예외를 잡고 예외처리를 한다. finally문은 예외가 있든 없든 항상 실행되는 문장이다.
public class ExceptionEx01 {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
try {
System.out.print("X : "); // 예외가 일어날 것 같은 코드를 try 문에 삽입
int x = scn.nextInt();
System.out.print("Y : ");
int y = scn.nextInt();
int div = x/y;
System.out.println("div : " + div);
}catch (ArithmeticException e) { // 0으로 나누었을 때 생기는 예외를 잡아준다
System.out.println("0으로 나눌 수 없습니다");
System.out.println(e.getMessage() + "\t");
e.printStackTrace();
}catch (InputMismatchException e) { // 정수가 아닌 문자를 넣었을 때 생기는 예외를 잡아준다.
System.out.println("정수만 입력하실 수 있습니다");
System.out.println(e.getMessage() + "\t");
}
scn.close();
}
}
* 예외 떠넘기기(throws)
메서드에서 발생한 예외를 내부에서 처리하기가 부담스러울 때에는 throws 키워드를 사용해 예외를 상위 코드 블록으로 양도 할 수 있다. throws는 예외를 해당 블록에서 처리하지 않고 다른 코드블록으로 떠넘긴다. 예외를 찾지 못하면 프로그램은 자연종료된다.
public class ExceptionEx02 {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
try {
square(scn.next());
} catch (NumberFormatException e) {
System.out.println("정수가 아닙니다.");
}
}
private static void square(String s) throws NumberFormatException{ // 메서드에서 오류를 처리하지 않고 메인으로 떠넘김
int n = Integer.parseInt(s);
System.out.println(n);
}
}