Programming/JAVA

[JAVA] 예외처리 / RuntimeException / ArithmeticException / e.printStackTrace() / Arr

Jayna. 2023. 12. 29. 16:12
728x90

 

에러의 종류

- 시스템 에러: 컴퓨터의 오작동으로 인해 발생하는 에러 => 소스코드로 해결이 안됨
- 컴파일 에러: 프로그램 실행 전 소스코드 상의 문법적인 문제로 발생하는 에러
=> 소스코드 수정으로 해결(빨간줄로 오류를 알려줌)
- 런타임 에러: 프로그램 실행 중 발생하는 에러
    => 소스코드 상 문법적인 문제가 없지만 발생
    => 개발자가 예측 가능한 경우 제대로 처리를 안 해놓았을 경우
    => 사용자의 잘못일 경우도 있음
- 논리 에러: 소스코드상 문법적인 무제도 없고, 실행했을 때도 굳이 문제가 발생하진 않지만,프로그램 의도상 맞지 않는 것(기획과 설계가 잘못되었을 경우 발생)
 

예외

시스템 에러를 제외한 나머지 컴파일, 런타임, 논리 에러와 같은 비교적 덜 심각한 에러들
특히 런타임에러를 주로 예외로 다룬다.
1. try ~ catch 문 이용
2. throws 이용 => 오류가 발생하는 메소드를 호출한 부분으로 넘김
 
 

RuntimeException

: 프로그램 실행시 발생되는 예외들
- ArrayIndexOutOfBoundsException : 배열의 부적절한 인덱으로 접근할 때 발생하는 예외
- NegativeArraySizeException : 배열의 크기를 음수로 지정할 경우 발생하는 예외
- ClassCastException : 허용할 수 없는 형변환이 진행될 경우 발생하는 예외
- NullPointerException : 주소값 객체 참조했더니 주소값이 null일 경우 발생하는 예외
- ArithmeticException : 나누기 연산 0으로 나누면 발생하는 예외  
 *  이러한 RuntimeException과 관련된 예외들은 조건문으로 해결가능하다
 

728x90

 

ArithmeticException 

 
방법 1. 조건문으로 처리(예외 발생을 막음)


방법 2. 예외처리 구문으로 해결(예외가 발생했을 경우 실행할 내용을 정의해두는 것)
try~catch문

try{
	//예외가 발생될 법한 구문
}catch( 발생할예외클래스이름 변수명 => 일종의 매개변수){
	// 해당 예외가 발생했을때 실행할 구문
}

 
 
** e.printStackTrace() : 현재 오류가 발생한 정보를 볼 수 있고, 어디서 에러가 났는지 나열해준다.
 
 

다중 catch블록
 * catch 할 예외가 여러 개일 경우 주로 사용
 * 예외 나열 순서 : 범위가 작은 자식타입의 예외 클래스부터 나열

 

 
배열 활용
ArrayIndexOutOfBoundsException : 배열의 부적절한 인덱으로 접근할 때 발생하는 예외
NegativeArraySizeException : 배열의 크기를 음수로 지정할 경우 발생하는 예외

 
 * CheckedException
  문법적으로 반드시 예외처리를 해줘야하는 예외들
  (즉, 예측 불가능한 곳에서 발생하기 때문에 미리 예외처리 구문을 작성해야 한다)
  => 주로 외부 매체와 어떤 입출력시 발생

 
방법1. try ~ catch문

 
방법2.  throws : 현재 method2에서 말고 이 메소드를 호출한 method1에서 예외를 위임하여 처리하게끔 하기

728x90