Java Error & Exception

박은빈·2023년 4월 22일
0

자바

목록 보기
17/25

이 내용에 대해 공부하기 전까지 나는 Error와 Exception의 차이를 몰랐다
하지만 지금은 알게 되었고 그 차이가 꽤 크다는 것도 알게 되었다

Error와 Exception이란?

Error

컴파일 시 문법적인 오류, 메모리 오류와 같은 프로세스에 문제가 발생되는 작업을 Error라고 한다
보통 Error는 개발자가 처리할 수 없는 심각한 문제를 나타낸다. 그렇기때문에 Error가 발생하면 보통 애플리케이션이 중단되거나 시스템이 다운 될 수 있다.

Exception

애플리케이션 동작 중 예기치 않았던 상태가 발생하여 수행중인 애플리케이션이 영향을 받는 경우를 말한다
Exception은 수습할 수 있는 비교적 덜 심각한 오류이기때문에 적절히 코드를 작성하면 오류를 마긍ㄹ 수 있다

Throwable

Throwable 클래스는 예외처리를 할 수 있는 최상위 클래스이다.
Exception과 Error는 Throwable의 상속을 받는다

Error

Error는 시스템 레벨에서 발생하여 개발자가 애플리케이션 동작 도중 조치할 수 없는 수준을 의미한다

Excpetion

Exception은 개발자가 구현한 로직에서 발생하며 애플리케이션은 예외처리를 하면 정상 동작한다

Excpetion의 2가지 종류

Checked Exception

예외처리가 필수이며, 처리하지 않으면 컴파일되지 않는다.

  • RuntimeException 이외에 있는 모든 예외
  • IOException, SQLException 등

Unchecked Exception

컴파일 때 체크되지 않고, Runtime에 발생하는 Exception을 말한다

  • RuntimeException 이외에 있는 모든 예외
  • NullPointerEcxeption, IndexOutOfBoundException 등

대표적인 Exception Class

  • NullPointerException : Null 레퍼런스를 참조할때 발생, 뭔가 동작시킬 때 발생합니다.

  • IndexOutOfBoundsException : 배열과 유사한 자료구조(문자열, 배열, 자료구조)에서 범위를 벗어난 인덱스 번호 사용으로 발생합니다.

  • FormatException : 문자열, 숫자, 날짜 변환 시 잘못된 데이터(ex. "123A" -> 123 으로 변환 시)로 발생하며, 보통 사용자의 입력, 외부 데이터 로딩, 결과 데이터의 변환 처리에서 자주 발생합니다.

  • ArthmeticException : 정수를 0으로 나눌때 발생합니다.

  • ClassCastException : 변환할 수 없는 타입으로 객체를 변환할 때 발생합니다.

  • IllegalArgumentException : 잘못된 인자 전달 시 발생합니다.

  • IOException : 입출력 동작 실패 또는 인터럽트 시 발생합니다.

  • IllegalStateException : 객체의 상태가 매소드 호출에는 부적절한 경우에 발생합니다.

  • ConcurrentModificationException : 금지된 곳에서 객체를 동시에 수정하는것이 감지될 경우 발생합니다.

  • UnsupportedOperationException : 객체가 메소드를 지원하지 않는 경우 발생합니다.

주요 Method

  • printStackTrace() : 발생한 Exception의 출처를 메모리상에서 추적하면서 결과를 알려줍니다. 발생한 위치를 정확히 출력해줘서 제일 많이 쓰며 void를 반환합니다.

  • getMessage() : 한줄로 요약된 메세지를 String으로 반환해줍니다.

  • getStackTrace() : jdk1.4 부터 지원, printStackTrace()를 보완, StackTraceElement[] 이라는 문자열 배열로 변경해서 출력하고 저장합니다

Exception Handling

예외 처리(Exception Handling)는 자바에서 프로그램에서 예외 상황이 발생했을 때 이를 처리하는 방법을 의미한다 예외 처리는 프로그램의 안정성과 신뢰성을 높이기 위해 필수적이다

try-catch

try 블록은 예외가 발생할 가능성이 있는 코드를 감싸는 블록이며, catch 블록은 예외 처리 코드를 포함하는 블록이다. 예외가 발생하면 try 블록의 실행을 중지하고, 해당 예외가 발생한 catch 블록으로 이동하여 예외를 처리한다

Throws

throws 키워드를 사용하여 예외를 호출한 메소드로 던질 수 있으며, 메소드를 호출한 곳에서 예외 처리를 수행할 수 있다

참고 : https://gyoogle.dev/blog/computer-language/Java/Error%20&%20Exception.html

profile
안녕하세요

0개의 댓글