기록 > 기억
[JAVA] 예외 처리 본문
예외 처리
● 예외 및 예외 종류
하드웨어 문제로 인한 에러가 아닌 사용자가 잘못 조작했거나 개발자가 잘못 코딩했을 때 발생하는 오류
예외 발생시 프로그램은 바로 종료되는데 예외처리는 프로그램 전체가 중단되지 않기 위한 조치
① 일반 예외(Exception) → 컴파일 시 예외처리 검사
② 실행 예외(Runtime Exception) → 컴파일 시 검사하지 않고 실행될 때 예외 발생
● 실행 예외 (Runtime Exception)
NullPointerException | 참조변수의 값이 null 인데 객체 접근 연산자 도트를 사용했을 때 발생 |
ArrayIndexOutOfBoundsException | 배열의 인덱스 범위를 초과 했을 때 발생 |
NumberFormatException | 문자열을 숫자로 변환할 때 숫자가 아닌 문자가 포함되어 있을 때 발생 |
ClassCastException | 엉뚱한 타입으로 타입 변환 할 때 발생 |
● try ~ catch ~ finally
public class TryCatchFinally {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver2"); //컴파일 에러
System.out.println("클래스를 찾았습니다."); //예외발생시 프로그램 중단 → 실행안됨
} catch (ClassNotFoundException e) {
System.out.println("존재하지 않는 클래스입니다."); //에러 처리
} finally {
System.out.println("프로그램을 종료합니다."); //항상 실행
}
}
}
● 다중 catch
public class MultiCatch {
public static void main(String[] args) {
try {
String str1 = args[0];
String str2 = args[1];
int num1 = Integer.parseInt(str1);
int num2 = Integer.parseInt(str2);
System.out.println(num1 + num2);
}catch(ArrayIndexOutOfBoundsException e) {
System.out.println("매개변수의 수가 부족합니다.");
}catch(NumberFormatException e) {
System.out.println("숫자로 변환할 수 없습니다.");
}
}
}
● try~catch~finally / throws Exception / throw new Exception
public class ExceptionHandling {
//(1) try ~ catch [ ~ finally ] → 예외가 발생할만한 곳에 직접 처리 (try ~ catch)
public void tryCatchException() {
try {
for(int i=5; i>=0; i--) {
double d = 10/i;
System.out.println("10/" + i + " = " + d);
}
} catch(ArithmeticException e) {
System.out.println("try ~ catch : 예외발생");
} finally {
System.out.println("무조건 실행");
}
System.out.println("프로그램 정상종료");
}
//(2) throws Exception → 메소드를 호출한 곳으로 예외 넘기면 호출한 곳에서 예외처리
public void throwsException() throws ArithmeticException {
int a = 10/0;
}
//(3) throw new Exception
public void throwException() {
try {
int a = 10/4;
throw new ArithmeticException();
} catch(ArithmeticException e) {
System.out.println("throw : 강제로 예외 발생");
}
}
}
public class TestMain {
public static void main(String[] args) {
ExceptionHandling eh = new ExceptionHandling();
//(1) try ~ catch
eh.tryCatchException();
//(2) throws Exception
try {
eh.throwsException();
} catch(ArithmeticException e) {
System.out.println("throws : 예외 발생");
}
//(3) throw new Exception
eh.throwException();
}
}
'IT국비지원' 카테고리의 다른 글
[JAVA] 스레드 (0) | 2021.10.27 |
---|---|
[JAVA] 기본 API 클래스 (0) | 2021.10.26 |
[JAVA] 문자열 (String) (0) | 2021.10.26 |
[JAVA] 인터페이스 (0) | 2021.10.25 |
[JAVA] 상속 (0) | 2021.10.24 |
[JAVA] 객체와 클래스 (0) | 2021.10.24 |
[JAVA] 참조 타입 (0) | 2021.10.24 |
Comments