JAVA
JAVA 예외 처리 try-catch-fianlly, throw
짱코딩러
2022. 7. 13. 14:51
예외(Exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
예외처리(Exception handling) : 예외 발생에 대비한 코드를 작성해 정상적인 실행상태를 유지시키는 것.
try-catch
try{
예외가 발생할 가능성이 있는 실행문
}
catch(처리할 예외타입 선언){
예외 처리문
}
try-catch-fianlly
fianlly 블록문에는 예외 발생 여부와 상관 없이 무조건 실행되는 문장을 넣어준다.
예시
public class ArrayException {
public static void main(String[] args) {
int[] intArray = new int[5];
intArray[0] = 0;
try {
for (int i = 0; i < 5; i++) {
intArray[i + 1] = i + 1 + intArray[i];
System.out.println("intArray[" + i + "]" + "=" + intArray[i]);
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("배열의 인덱스가 범위를 벗어났습니다.");
}
}
}
출력:
intArray[0]=0
intArray[1]=1
intArray[2]=3
intArray[3]=6
배열의 인덱스가 범위를 벗어났습니다.
throw
일부러 예외를 만들어줌
import java.util.Scanner;
//사칙연산을 처리하는 계산기를 작성해보자
//단, 0으로 나누거나 0을 곱하는 것은 오류로 처리하고,
//처리 결과가 음수로 나와도 오류를 발생시키도록 한다.
public class Ex1026 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("첫번째 수를 입력하세요 : ");
int a = scan.nextInt();
System.out.print("계산할 연산자를 입력하세요 : ");
String b = scan.next();
System.out.print("두번째 수를 입력하세요 : ");
int c = scan.nextInt();
try {
switch (b) {
case "+":
System.out.println(a + "+" + c + "=" + (a + c));
break;
case "-":
System.out.println(a + "-" + c + "=" + (a - c));
break;
case "*":
if(a==0 || c==0)
throw new Exception("0으로 곱하면 어차피 0임ㅋ;");
System.out.println(a + "*" + c + "=" + (a * c));
break;
case "/":
if(c==0)
throw new Exception("0으로 못나눔...");
System.out.println(a + "/" + c + "=" + (a / c));
break;
}
if(a/c <0)
throw new Exception("결과가 음수네요ㅠㅠ");
} catch (Exception e) {
System.out.print("발생 오류 ==> ");
System.out.println(e.getMessage());
}
}
}
throws
예외처리 해야할 메소드명 옆에 throws 메소드명 적어줌(예외를 적용해줌)
그러면 그 메소드에서이제 예외가 발생하고! 그걸 예외처리 해주면 됨.