
오류 : 프로그램 중요 기능의 수행을 불가능 하게 하는 오류
예외 : 오류보다 가벼운 문제, 프로그램 자체로 처리 가능
예외 발생시 프로그램이 비정상 종료 되는 것을 막고, 예외와 상관없는 기능은 정상동작되도록 처리하는 작업
Java에서는 Exception 클래스로 제공됨. 예외가 발생하면 객체로 인식함
![[Pasted image 20231022163455.png]]
자바 소스 작성 시 반드시 예외처리
예외 처리를 하지 않고 컴파일 시에는 오류가 발생
| 예외 클래스 | 설명 |
|---|---|
| IOException | 입출력 작업 오류시 |
| FileNotFoundException | 파일 입출력 작업시 |
| SQLException | DB 연동 작업 도중 오류 |
자바 소스에서 예외처리 하지 않아도 됨
JVM 실행시 예외 발생을 인지하여 처리해줌
| 예외 클래스 | 설명 |
|---|---|
| ArrayIndexOutOfBoundsException | 배열 마지막 인덱스 범위를 넘은 경우 |
| ArithmeticException | 수치형 데이터를 0으로 나눌때 |
| NullPointerException | 생성되지 않은 인스턴스 참조시 |
| NumberFormatException | 변경하려는 문자열이 수치형이 아닌 경우 |
| ClassCastException | 인스턴스와 다른 종류의 클래스로 캐스팅시 발생 |
| ClassNotFoundException | 클래스가 존재하지 않은 경우 |
try{
//예외 발생
}catch{
//예외 처리 코드
}
// 실행 코드
try{
//Exception
}catch(FileNotFoundException e1){
// 파일 예외
}catch(IOException e2){
// 입출력 예외
}catch(Exception e3){
// 그 외 예외
}
[!caution] 다중 catch문 사용시 주의
Exception 계층구조에서 상위 클래스 타입 매개변수를 가지는 catch문은 뒤에 위치시켜야 한다.
예외 발생 유무와 상관없이 실행
프로그램에서 외부장치 연동시 많이 사용됨
자바의 메서드 호출 방법을 이용하여 메서드 내에서 발생한 예외를 처리함.
public class Test{
public void call() throws Exception{
//code
}
}
예외 발생 상황이 아니더라도 강제로 예외 발생시키는 기능
사용자 정의 예외 클래스로 예외 처리시 사용
import java.io.IOEXception;
public class ArrayUtil{
if(...) throw new IOException("~~");
}
public class UserDefinedException extends Exception{
public String toStrint();
public String getUserExceptionInfo();
public static String showTime();
}