✔️ Error & Exception
프로그램 오류란?
- 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우
- 프로그램 오류는 Error(에러)와 Exception(예외) 두 가지로 구분할 수 있음
- Throwable 클래스는 예외처리를 할 수 있는 최상위 클래스이며 Exception과 Error는 Throwable의 상속을 받음
Error(에러)란?
- 컴파일 시 문법적인 오류와 런타임 시 널 포인트 참조와 같은 오류로
프로세스에 심각한 문제를 야기시켜 프로세스를 종료시킬 수 있음 - 메모리 부족이나 스택 오버 플로우와 같이 발생하면 복구할 수 없는 심각한 오류
- 시스템 레벨에서 발생하므로 프로그래머가 어떻게 조치할 수 없는 수준
- Error 상황을 미리 미연에 방지하기 위해 Exception 상황을 만들 수 있음
Exception(예외)란?
- 컴퓨터 시스템의 동작 중 연산 도중 넘침에 의해 발생한 끼어들기 등
예기치 않았던 이상 상태가 발생하여 수행 중인 프로그램이 영향을 받는 것 - 발생하더라도 수습할 수 있는 비교적 덜 심각한 오류이며
프로그래머가 적절히 코드를 작성해주면 비정상적인 종료를 막을 수 있음 - Java에서는 try-catch문으로 Exception Handling을 할 수 있음
- try : 위험한 로직이 들어감
- catch : 예외 발생 시 수행할 로직이 들어감
- try 중이라도 예외가 발생한 다음의 코드들은 실행되지 않으며 catch 구문으로 넘어감
- catch 구문은 else if처럼 여러 개 쓸 수 있음
- finally는 마지막에 실행하고 싶은 로직이 들어가며, 대표적으로 close()가 있음
- Checked Exception과 Unchecked Exception이 존재
- Checked Exception : 예외처리가 필수이며 처리하지 않으면 컴파일되지 않음. JVM 외부와 통신할 때 주로 사용
- Unchecked Exception : 컴파일할 때 체크되지 않고 런타임에서 발생함.
- Exception의 주요 메소드로는 printStackTree(), getMessage(), getStackTrace()가 존재
- printStackTree() : 발생한 Exception의 출처를 메모리상에서 추적하면서 결과를 알려줌
- getMessage() : 한줄로 요약된 메시지를 String으로 변환해줌
- getStackTrace() : printStackTree()를 보완하기 위하여 StackTraceElement[] 문자열 배열로 변경해서 출력하고 저장
'Tech Interview > Language' 카테고리의 다른 글
[Language] Wrapper 클래스 (0) | 2024.03.25 |
---|---|
[Language] 오브젝트 클래스 (0) | 2024.03.25 |
[Language] 컴포지션 (0) | 2024.03.21 |
[Language] 오버라이딩 vs 오버로딩 (0) | 2024.03.20 |
[Language] 인터페이스 vs 추상 클래스 (0) | 2024.03.19 |