-
Java -Try CatchJAVA 2025. 2. 27. 13:42
에러(Error)?
프로그램이 비정상적으로 동작해서 발생하는 것을 말한다
( StackOverflowError[스택이 쌓여 발생되는 에러], OutofMemoryError [메모리 부족 에러] 등등)
예외(Exception)?
● 개발자의 실수로 예기치 않은 상황이 발생했을 때 발생하는 상황.
프로그램 실행 중 예상치 못한 상황이 발생했다는 것을의미.
10/ 0 (예외. by zero)
● 프로그램 예외를 처리 하지 않으면 프로그램 중단된다.
● try-catch로 예외 상황을 처리하여 문제 해결이 가능하다.
int ret = 10/ 0; => 프로그램 중단. try{ int ret = 10/ 0; => 프로그램이 중단 되도 실행된다. } catch( ArithmeticException ex){ System.Out.Println("산술 예외가 발생 했다."); System.Out.Println("분모가 0이 되면 안됩니다."); }
throw new [ "사용자 지정"Exception]
● 의도적으로 예외를 발생시킬수도 있다.
ex)
int age = 10; if(age < 10){ throw new IllegalArgumentException("미성년자는 접근 할수 없음.") }
예외 전파
메서드에서 발생한 예외가 해당 매서드 내에서 처리되지 않았을때, 매서드를 호출한 상위 매서드로 전달되는 과정.UncheckException CheckedException 처리 여부 ● 강제로 하지 않는 예외 ● 강제로 예외 처리. 예외 처리 실행 여부 ● 시작지점까지 전파된다.
● 끝까지 처리 하지 않으면
비정상 종료한다.● 예외 처리 하지 않을시 컴파일 오류가 발생
● 반드시 try - catch로 예외 처리 하거나 throw키워드를 사용해야 한다.
-> throw로 예외 처리의 책임을 호출자에게 전가 할수 있다.확인 시점 ● 실행 단계 ● 컴파일 단계 대표적으로는.... ● RuntimeException을 상속 받는
모든 예외를 전부
- Arithmetic
=> 정수를 0으로 나눈 경우
- ArrayStore
=> 배열 유형이 허락하지 않는
객체를 배열에 저장하는 경우.
- ArrayIndexOutOfBound
=> 배열을 참조하는 인덱스가 잘못된 경우.
- ClassCast
=>적절치 않게 class를 형변환 한 경우.
- NullPoint
=> Null 객체를 참조했을 경우.
- NegativeArraySize
=> 배열의 크기가 오류인 경우.
- NoClassDefFound
=> 클래슬를 찾지 못한 경우
- OutOfMemory
=> 사용 가능한 메모리가 없는 경우
-IndexOutOfBounds
=> 객체 범위를 벗언난 Index를 사용한 경우.
- IllegalArgument
=> 매서드 유형이 일치하지 않는
매개 변수를 전달하는 경우.
- IllegalMonitorState
=> 스레드가 스레드에 속하지 않는
객체를 모니터 하려고 기다리는 경우.
- IllegalState
=> 적절하지 않는 때에 매서드를
호출한 경우.● Exception 클래스를 직접 상속 받는
모든 예외를 CheckedException 이라고 한다
● (RuntimeException 제외)
-IO
=> 입출력 작업 중에 발생한 오류
- ReflectiveOperation
- FileNotFound
=> 존재하지 않는 파일의 입력
- ClassNotFound
=> 클래스의 이름을 잘못 기재한 경
-DataFormat
=> 입력한 데이터 형식이 잘못된 경우p.s 프로그램을 만들다가 발생하는 오류를 단순 구글링을 했다면 try-catch를 하는 중요한 이유를 깨닳았다.
하지만, 무분별한 try-catch는 프로그램의 성능을 낮추고, 동시에 가독성을 떨어뜨리기 때문에 가능한
필수적으로 필요한 곳이 아니라면 , 예외 방지를 하기위한 로직을 잘 작업해야하는 것을 깨닭았다.
'JAVA' 카테고리의 다른 글
Java - 계산기 [트러블 슈팅] (0) 2025.03.05 숫자 비교하기 (0) 2025.03.04 JAVA - 클래스. 객체 설계도 작성 방법 (0) 2025.02.26 JAVA -배열 , for문 (0) 2025.02.24 JAVA -for, while, do-while (0) 2025.02.24