생각기록
2023-03-02 java 예외 처리 / try-catch-finally 본문
예외 처리
컴파일 오류와 다름!
• 컴파일 오류는 문법에 맞지 않게 작성된 코드가 있을 때 발생
• 컴파일 할 때 발견되기 때문에 코드가 실행조차 되지 않음.
빨간줄은 컴파일 오류라 프로그램이 실행조차 되지 않는다.
• 예외란 프로그램 실행 중에 의도치 않는 결과가 나오는 것을 의미
• 예외란 프로그램 실행 중에 의도치 않는 결과가 나오는 것을 의미
하지만 예외는 프로그램이 실행하는 도중에 발생해서 생기는 오류입니다.
그런 예외을 방지하고 자하는 것이 예외처리라고 합니다.
예외가 발생 / 실행 전에는 모르기때문에 실행은 됨
• 숫자를 0 으로 나누는 경우 (ArithmeticException)
• 배열의 인덱스 범위를 벗어나는 경우 (ArrayIndexOutOfBoundsException)
• 정수를 입력받도록 작성한 코드에 문자열을 입력한 경우 (InputMismatchException)
• import 필요
• import java.util.InputMismatchException;
• …etc
해결법
try-catch-finally
문법

try안에는 예외 발생 가능성있는 실행문
catch문은 발생햇을때 실행문
finally 예외 발생여부 상관없이 무조건 발생하도록
0을 나눌때 예외처리 예시

Exception in thread "main" java.lang.ArithmeticException: / by zero
at java_first_project.Main.main(Main.java:14)
이런오류가 뜬다
예외처리 방법 > 아까 오류창에 떳던 부분의 ArithmeticException e 을 catch문에 넣기

정수를 입력받도록 작성한 코드에 문자열을 입력한 경우 (InputMismatchException)

Exception in thread "main" java.util.InputMismatchException
친절하게 import하라고 쓰여있다
catch문에서 InputMismatchException e 추가
package java_first_project;
import java.util.Scanner;
// java.util.InputMismatchException 임포트하라고 오류에서 쓰여있다.
import java.util.InputMismatchException;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// num에서 정수를 저장해야하는데 문자열을 저장해서 생기는 오류
// int num = scanner.nextInt();
// System.out.println(num);
try {
int num = scanner.nextInt();
System.out.println(num);
// 만약 숫자외에 것이 들어오게된다면 catch문
} catch (InputMismatchException e) {
System.out.println("숫자를 입력해주세요.");
}
scanner.close();
}
}
예외처리 실습

package java_first_project;
import java.util.Scanner;
//import java.util.ArrayList;
import java.lang.ArrayIndexOutOfBoundsException;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int [] intArr = {1, 2, 3, 4};
// for( int i=0; i < 5; i++) {
// System.out.println( intArr[i] + " ");
// }
//
try {
for( int i=0; i < 5; i++) {
System.out.println( intArr[i] + " ");
}
// 예외처리
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("인덱스가 범위를 벗어났습니다.");
}
scanner.close();
}
}

'SeSAC 풀스택 > JAVA &Spring boot' 카테고리의 다른 글
| 2023-03-04 java / 클래스의 상속 / 오버라이딩 (0) | 2023.03.04 |
|---|---|
| 2023-03-02 java 클래스 / 객체지향 프로그래밍 / getter, setter / static (1) | 2023.03.02 |
| 2023-03-02 java 표준 배열 (0) | 2023.03.02 |
| 2023-02-28 java 배열, 배열 출력 (0) | 2023.02.28 |
| 2023-02-28 JAVA / 환경설정 / 데이터타입 / 입출력 / 메소드 선언 (0) | 2023.02.28 |