Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[JAVA]예외 처리 본문
Contents
접기
#핵심 요약
- 예외(Exception)
- 정상적이지 않은 Case
- 0으로 나누기
- 배열의 인덱스 초과
- 없는 파일 열기 등..
- 정상적이지 않은 Case
- 예외처리
- try ~ catch
- try ~ catch ~ finally
- throw, throws
- finally
- 예외 발생 여부와 관계 없이 항상 실행되는 부분
- throw
- 예외를 발생시킴
- throws
- 예외를 전가시킴
#소스 코드
예외 처리 기본 예제
// Java 프로그래밍 - 예외 처리
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
class NotTenException extends RuntimeException {} //사용자가 만든 exception 을 만들어주고 싶으면 RuntimeException을 상속
public class Main {
public static boolean checkTen(int ten) {
if (ten != 10) {
return false;
}
return true;
}
public static boolean checkTenWithException(int ten) {
// if (ten != 10) {
// throw new NotTenException(); //10이 아니면 사용자가 만든 exception발생
// thorw new NotTenException 하면 아래와 같은 exception 이 발생한다. (RuntimeException 상속)
// Exception in thread "main" NotTenException
// at Main.checkTenWithException(Main.java:21)
// at Main.main(Main.java:84)
// }
try {
if (ten != 10) {
throw new NotTenException(); //10이 아니면 사용자가 만든 exception발생
}
} catch (NotTenException e) { //익셉션 처리
System.out.println("e = " + e);
return false;
}
return true;
}
//함수 옆 throws Exception
//예외가 발생하면 아래 함수에서 호출하는 것이 아닌 함수를 호출한 곳에서 처리하도록 전가시킨다.
public static boolean checkTenWithThrows(int ten) throws NotTenException {
if (ten != 10) {
throw new NotTenException();
}
return true;
}
public static void main(String[] args) throws IOException {
// 1. 예외
// 1-1. 0으로 나누기
System.out.println("== 0으로 나누기 ==");
// int a = 5 / 0;
int a = 0;
try {
a = 5 / 0; //예외가 발생할 코드를 적어줌
} catch (ArithmeticException e) {
System.out.println("0으로 나누기 예외 발생");
System.out.println("e = " + e);
} finally {
System.out.println("1-1 연습 종료");
}
// 1-2. 배열 인덱스 초과
System.out.println("== 배열 인덱스 초과 ==");
int[] b = new int[4];
// b[4] = 1;
try {
b[4] = 1;
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("인덱스 초과!");
System.out.println("e = " + e); //어떤 익셉션이 발생했는지 출력
}
// 1-3. 없는 파일 열기
System.out.println("== 없는 파일 열기 ==");
// BufferedReader br = new BufferedReader(new FileReader("abc.txt"));
// 2. throw, throws
System.out.println("== checkTen ==");
boolean checkResult = Main.checkTen(10); //Main클래스의 checkTen static함수
System.out.println("checkResult = " + checkResult);
System.out.println("== checkTenWithException ==");
checkResult = checkTenWithException(5);
System.out.println("checkResult = " + checkResult);
System.out.println("== checkTenWithThrows ==");
try {
checkResult = checkTenWithThrows(5);
} catch (NotTenException e) {
System.out.println("e = " + e);
}
System.out.println("checkResult = " + checkResult);
}
}
'공부 > JAVA' 카테고리의 다른 글
[JAVA]컬렉션 프레임워크 (0) | 2024.04.21 |
---|---|
[JAVA]콘솔 입출력, 파일 입출력 (+printf 예제) (0) | 2024.04.20 |
[JAVA]외부 클래스와 내부 클래스(정적 클래스, 익명 클래스, 지역 클래스) (0) | 2024.04.20 |
Comments