자바의 정석 ch8 예외처리 exception handling
1. 예외처리
프로그램 오류
- 컴파일 에러
- 컴파일 시에 발생하는 에러
- java.exe : 자바 컴파일러
- 컴파일 에러 발생 시 터미널에서는 컴파일 에러 메시지가 뜬다.
- 이클립스와 같은 IDE에서는 자동으로 컴파일을 해주어서 컴파일 에러 발생 시 빨간 줄이 뜬다.
- 자바 컴파일러가 하는 일
- 구문 체크 (문법이 맞는지)
- 번역
- 소스코드의 최적화
- 런타임 에러
- 실행 중에 발생하는 에러
- 컴파일을 에러없이 마쳤다고 해서 끝이 아니다, 프로그램 실행 중에도 에러가 발생할 수 있다.
- 논리적 에러
자바의 런타임 에러
- 에러(error)
- 수습될 수 없는 심각한 오류
- ex) Out Of Memory
- 예외(exception)
- 프로그램 코드에 의해서 수습될 수 있는 미약한 오류
- 예외처리 : 처리할 수 있는 것은 예외의 발생에 대비한 코드를 작성해서 프로그램이 잘 동작하게 하는 것
예외 클래스의 계층 구조
예외처리하기 - try-catch문
- 프로그램 실행중 발생한 에러는 어쩔 수 없지만, 예외는 프로그래머가 예외처리를 미리 해주어야 한다.
- 예외처리의 목적
- 예외로 인한 프로그램의 비정상적인 종료를 방지하고 프로그램을 정상적으로 실행하도록 하는 것
- if문과 달리, try, catch 블럭은 문장이 하나뿐이더라도 괄호{}를 생략할 수 없다.
예외의 발생과 catch 블럭
public class ExceptionEx7 {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
try {
System.out.println(3);
System.out.println(0/0);
System.out.println(4);
} catch (ArithmeticException ae){
if(ae instanceof ArithmeticException){
System.out.println("true");
}
System.out.println("ArithmeticException");
} catch (Exception e){
System.out.println("Exception");
}
System.out.println(6);
}
}
</> 실행 결과
1
2
3
true
ArithmeticException
6
- try 구문 안에 있는 System.out.println(4); 는 실행되지 않는다.
- 이 코드의 윗줄에서 예외가 발생해서 catch문으로 넘어가고, catch문이 실행된 후 catch문을 빠져나가기 때문이다.
- System.out.println(0/0);
- 이부분은 첫번째 catch 구문과 두번째 catch 구문 둘 다 해당되지만 catch 문이 여러개 있어도 발생한 예외 한개만 수행하면 아예 catch 문 밖으로 빠져나가게 된다.
오늘 한 일
- 내가 요즘 노력하는 부분 중 하나가 '습관들이기' 이다. 스터디와 슬랙 채널에서 블로그 공유 등으로 TIL 작성과 자바의 정석 학습 이 두가지는 습관처럼 하고 싶다.
- 학습정리에 나온 부분은 다 학습하지 못했다. 못한 부분은 주말에 하기
- 자바의 정석 ch8 예외처리
Todo
- 객체지향의 사실과 오해 구매
- 구매한 책들을 다 앞부분만 봤는데 한 권이라도 끝내보자...ㅎㅎㅎ
- 스프링 입문을 위한 자바 객체 지행의 원리와 이해
- SOLID 원칙
Reminder
- 너무 힘들고 아무것도 하기싫으면 집어치우고 엎드리자. 개인적으로 이 방법이 잘 통한다. 1-20분 정도 엎드려서 얕은 잠에 들었다 깨면 머리가 맑아져서 이전에 보이지 않았던 부분들이 보이는 것같다. 내가 기억했으면 한다. 머리아프고 하기싫으면 너무 지쳐있는 상태이니 잠깐의 휴식을 취하도록
- 여태까지는 노션에 내가 학습한 걸 정리, 받아적는 수준으로 적고, 이후에 기억이 안나서 그 내용을 다시 볼때 적어놨던 내용을 다시 보고 이해하고 이런식으로 학습을 해왔다. 이제는, 학습한것을 내 언어로 정리하는 것을 시작해야할 것 같다. 이제 노션에 정리는 정리대로하고, 빈 노션 페이지에 목차만 적어두고 그에 대한 내용을 적어보는 시간을 가지자.
- 떠오르는 생각들에 대해서 다 적고 끊임없이 스스로를 remind 하자, 항상 효율성을 잊지 않고 비효율적이고 불필요한 것들은 과감하게 없애자.
- 바로바로 적어야 잊어버리지 않는다.
- 내 기억력을 믿지 말자 ㅋㅋ
"내 기억력을 믿지 말자 " 공감합니다ㅋㅋㅋ저도 연 본받아서 오늘부터 자바 공부 다시 달리겠습니다!