
예외처리(Exception)
📌 예외처리(Exception) ?
프로그래머가 예기치못한 예외의 발생에 미리 대처하는 코드를 작성하는 것으로,
실행중인 프로그램의 비정상적인 종료를 막고, 상태를 정상상태로 유지하는 것이 목적
슈퍼마켓을 운영하려고 한다.
혹시나 발생할 위험에 대비해 1~4를 미리 준비했다.
운영을 시작했는데, 생각지 못한 문제가 발생했다.
운영 전에는 예외를 컴파일 시 잡고
운영을 시작한 다음에는 예외를 런타임 시 잡아야 한다.

강의를 하고 있는데
밖에 화재가 발생하면 강의를 이어갈 수 없다.
나가서 화재를 진압하거나 119에 신고 등 문제를 해결한 다음 다시 강의를 해야겠지.
여기서 이 문제를 해결하는 부분을 예외처리라고 한다.
문제를 해결하지 않고 강의를 계속하면 아주 큰일이 나겠찌 !

예외처리 코드로 이해하기
💡 컴파일 예외
실행 전 자바가 미리 예외를 잡아준다.


3초 잠자기 업무를 하는데
0.3초 지난 시점에 윈도우에 치명적 오류가 발생해서 방해하면
CPU는 윈도우 오류를 처리하고 다시 돌아와서 나머지 업무를 해야한다.
그래서 try catch로 예외처리를 해줘야 한다.


런타임 예외가 발생하면 실행 시에 오류가 발생되고
프로그램이 정상 종료되지 않는다.

try - catch 로 잡아주면 예외를 잡을 수 있다.

catch 구문에서 에러 메세지를 확인할 수 있다.
e.printStackTrace();
System.out.println(e.getMessage());

총이라는 클래스를 만들고 shoot 메서드를 만든 다음
총을 메모리에 띄우고 메서드를 호출했을 때 잘 실행된다.


그런데 null 이면? 실행 시 오류가 발생한다.
try-catch 구문을 이용해 오류를 미리 잡아준다.


발생한 오류와 캐치 구문의 오류가 다르면
오류를 캐치하지 못한다.
그런데 예외가 굉장히 많아서 모든 예외를 맞게 설정하지 못할 수 있다.

이럴 때는 부모 예외 클래스를 설정해주면 된다.
런타임 예외처리는 RuntimeException 으로 처리해주면 되겠다.

'Language > Java' 카테고리의 다른 글
| 스트림(Stream), 바이트 스트림, 배열 스트림, 버퍼 스트림 (0) | 2023.04.14 |
|---|---|
| String Constant Pool / 문자열 비교는 equals (0) | 2023.04.10 |
| 동기적 실행 vs 비동기적 실행 (0) | 2023.04.07 |
| 스레드(thread) (0) | 2023.04.07 |
| 컬렉션(Collection) - ArrayList (0) | 2023.04.06 |