NullPointerException : Null 레퍼런스를 참조할때 발생, 뭔가 동작시킬 때 발생합니다.
IndexOutOfBoundsException : 배열과 유사한 자료구조(문자열, 배열, 자료구조)에서 범위를 벗어난 인덱스 번호 사용으로 발생합니다.
FormatException : 문자열, 숫자, 날짜 변환 시 잘못된 데이터(ex. "123A" -> 123 으로 변환 시)로 발생하며, 보통 사용자의 입력, 외부 데이터 로딩, 결과 데이터의 변환 처리에서 자주 발생합니다.
ArthmeticException : 정수를 0으로 나눌때 발생합니다.
ClassCastException : 변환할 수 없는 타입으로 객체를 변환할 때 발생합니다.
IllegalArgumentException : 잘못된 인자 전달 시 발생합니다.
IOException : 입출력 동작 실패 또는 인터럽트 시 발생합니다.
IllegalStateException : 객체의 상태가 매소드 호출에는 부적절한 경우에 발생합니다.
ConcurrentModificationException : 금지된 곳에서 객체를 동시에 수정하는것이 감지될 경우 발생합니다.
UnsupportedOperationException : 객체가 메소드를 지원하지 않는 경우 발생합니다.
printStackTrace() : 발생한 Exception의 출처를 메모리상에서 추적하면서 결과를 알려줍니다. 발생한 위치를 정확히 출력해줘서 제일 많이 쓰며 void를 반환합니다.
getMessage() : 한줄로 요약된 메세지를 String으로 반환해줍니다.
getStackTrace() : jdk1.4 부터 지원, printStackTrace()를 보완, StackTraceElement[] 이라는 문자열 배열로 변경해서 출력하고 저장합니다.
JAVA에서 모든 예외가 발생하면 Exception 객체를 생성합니다. 예외를 처리하는 방법에는 크게 2가지가 있습니다.
1) 직접 try ~ catch 를 이용해서 예외에 대한 최종적인 책임을 지고 처리하는 방식
2) throws Exception 을 이용해서 발생한 예외의 책임을 호출하는 쪽이 책임지도록 하는 방식 (주로 호출하는 쪽에 예외를 보고할 때 사용합니다.)
로직 중에 예외가 발생할지도 모르는 부분에 try ~ catch 구문으로 보험 처리합니다.
try 에는 위험한 로직이 들어가고, catch 에는 예외 발생 시 수행할 로직이 들어갑니다.
try 중이라도 예외가 발생한 다음의 코드들은 실행되지 않으며 catch 구문으로 넘어갑니다.
catch 구문은 else if 처럼 여러개 쓸 수 있습니다.
finally 는 마지막에 실행하고 싶은 로직이 들어가며, 대표적으로 .close() 가 있습니다.
예외 처리를 현재 메소드가 직접 처리하지 않고 호출한 곳에다가 예외의 발생 여부를 통보합니다. 호출한 메소드는 이걸 또 던질건지 직접 처리할 건지 정해야합니다.
public class ThrowsEx {
public void call_A() throws Exception {
call_B();
}
private void call_B() throws Exception {
call_C();
}
private void call_C() throws Exception {
System.out.println(1 / 0);
}
public static void main(String[] args) throws Exception {
ThrowsEx test = new ThrowsEx();
test.call_A();
}
}
실행결과
Exception in thread "main" java.lang.ArithmeticException: / by zero
at exception.ThrowsEx.call_C(ThrowsEx.java:13)
at exception.ThrowsEx.call_B(ThrowsEx.java:9)
at exception.ThrowsEx.call_A(ThrowsEx.java:5)
at exception.ThrowsEx.main(ThrowsEx.java:18)
출처:
https://gyoogle.dev/blog/computer-language/Java/Error%20&%20Exception.html