순간을 기록으로

[Java] 오류, 에러, 예외(Exception) 본문

Development/JAVA

[Java] 오류, 에러, 예외(Exception)

luminous13 2022. 10. 21. 16:11

오류

프로그램이 실행 중에 오작동을 하거나 비정상적인 종료를 하는 경우가 있습니다. 이때 이렇게 비정상적인 종료를 하도록 만든 원인을 프로그램 오류 또는 에러라고 합니다. 

시점에 따른 에러 종류

  • 컴파일 에러(Compile Error): 컴파일 시에 발생하는 에러
    • 컴파일러가 컴파일하는 과정에 잘못된 문법 등을 발견했을 때 발생하는 에러입니다.
  • 런타임 에러: 실행 중에 발생하는 에러
    • 사실은 에러라는 표현보다 오류가 더 좋습니다. 오류 안에 에러와 예외가 있다고 생각하는 게 편합니다.
  • 논리적 에러: 실행은 되지만, 의도와는 다르게 동작하는 에러

런타임 에러(오류)의 2가지 종류

  • Error(에러): 코드로 극복할 수 없는 심각한 오류. 개발자가 고치지 못한다.
  • Exception(예외): 코드로 수습될 수 있는 오류를 의미합니다. 에러에 비하면 상대적으로 경미한 오류입니다.

 

런타임 에러의 계층구조

  • 모든 클래스는 Object 클래스를 상속하므로 오류 관련 클래스 또한 Object를 상속합니다.
  • Throwable은 e.getMessage()와 e.printStackTrace()는 정의합니다.
  • 에러는 개발자가 개선할 수 있는 오류가 아니므로 해결할 수 있는 Exception에 집중합니다.

 

예외 클래스의 구조

예외클래스는 크게 2가지로 구분할 수 있습니다.

  • Exception 클래스와 그 자손들(RuntimeException과 그 자손들은 제외)
    • 프로그램 사용자 동작에 의해 발생할 수 있는 예외들입니다.
    • 예를 들어 존재하지 않는 파일의 이름을 입력할 경우에는 FileNotFoundException이 발생합니다.
    • 예를 들어 데이터 형식을 잘못 입력한 경우에는 DateFormatException이 발생합니다.
  • RuntimeException 클래스와 그 자손들
    • 프로그래머스 실수로 발생하는 예외들입니다.
    • 예를 들어 사이즈가 5인 배열에 arr[5]에 접근하면 ArrayIndexOutOutBoundsException이 발생합니다.
    • 예를 들어 숫자 5를 0으로 나누면 ArithmeticException이 발생합니다.
Comments