코딩공부 27일차: 프로그래머스 자바 입문 - 9. 예외 처리
#비전공자개발 공부 27일차
프로그래머스 자바 입문 강의를 듣는 중이다
https://school.programmers.co.kr/learn/courses/5
자바 입문
자바 입문 가장 널리 쓰이는 프로그래밍 언어 Java로 프로그래밍의 기초를 다져보세요. 이 강의의 내용을 책으로 만나고 싶으시면 여기를 눌러 책 정보를 확인하세요. 강의를 다 들었는데, 지금
school.programmers.co.kr
파트9 예외 처리:
Exception
정수를 0으로 나누는 등 할 수 없는 일이 일어났을 떄 자바에서 예외가 일어난다
예외가 일어나면 그 줄 밑으로 아무것도 실행되지 않는다
이러한 예외를 미리 예측하고 대비할 수 있도록 하는 것을 예외 처리라고 한다
예외 처리를 위해 필요한 키워드는 try catch finally 이다
finally는 생략 가능하다
try에 예외가 일어날 것으로 예측되는 부분을 넣고
catch에 발생할 수 있는 오류를 넣는다
finally는 생략 가능하지만 이 블록을 만들면 오류가 발생하든 아니든 무조건 실행하게 된다
위의 사진은 예시이다
(빨간색 부분은 이 예시의 예외 오류 이름
무슨 오류인지 모르면 Exception e로 대체할 수 있다)
예외클래스변수명.toSting은 예외의 정보를 알려주는 메소드
finally를 추가하고 예외가 발생하지 않도록 바꾸면
catch 부분은 실행되지 않고 finally는 무조건 실행된다
catch 블록은 여러 개 둘 수 있다
Exception클래스들은 모두 Exception클래스를 상속받으므로, 예외클래스에 Exception을 두게 되면
어떤 오류가 발생하든지 간에 하나의 catch블록에서 모든 오류를 처리할 수 있다
파트9 예외 처리:
Throws
Throws는 내 책임을 떠넘기는 것이다
예시처럼 메소드 옆에 throws 예외 종류를 적어주면
이 줄이 아닌 이 메소드를 호출한 줄에서 예외 처리를 해야 한다
이 자리에 Exception을 넣으면 모든 종류의 예외를 넘길 수 있다
따라서 divide 메소드를 사용한 쪽에 try, catch 블록을 사용했다
파트9 예외 처리:
Exception 발생시키기
Throw는 강제로 예외를 발생시킨다
Throws와 같이 쓰는 경우가 많다
전 강의에서도 계속 살펴본 이 예시는
두 번째 매개변수가 0이면 예외를 발생시킨다
프로그래머가 생각하기에도 j가 0이 되면 안 되기 때문에, 경고창을 추가하고 0을 반환한다
하지만 저렇게 되면 k, k를 이용한 divide값도 모두 0을 출력하게 된다
이는 잘못된 값이므로 이런 일이 벌어지지 않도록 프로그래머는 일부러 예외를 발생시킨다
이때 사용하는 것이 Throw다
예시처럼 해당 부분에 오류를 일으키고
오류를 메소드를 호출한 줄에 떠넘기고
거기서 try, catch를 이용해 예외 처리를 해준다
그러면 e.toString을 사용했기 때문에 예외의 종류가 출력된다
파트9 예외 처리:
사용자 정의 Exception
사용자 정의 예외를 만드는 이유는 위와 같다
오류가 발생했을 떄 이름으로 그 원인을 유추하기 위함인 것
Exception 클래스를 상속 받아 정의한 checked Exception
반드시 오류를 처리 해야만 하는 Exception
예외 처리하지 않으면 컴파일 오류 발생
RuntimeException 클래스를 상속 받아 정의한 Unchecked Exception
예외 처리하지 않아도 컴파일 시에는 오류를 발생시키지 않는다
하지만 예외는 적절하게 처리하는 것이 프로그래밍적으로 좋다
이렇게 RuntimeException을 상속받으면
Unchecked Exception을 만들 수 있다
똑같이 해도 내가 하면 super(ex); 부분이 에러가 나서..
일단 강의노트 올려두고 내일 다시 해볼 예정(나중에 다시 해봤을 때 보이는 게 많다)
실습은 모두 통과했다(쉬워서)
자바 입문 강의가 모두 끝났다(연습 문제를 해야 하지만 이건 따로 뺴서 할 예정)
학원 시험 보면서 느낀 점은 확실히 '입문' 강의답게 빼먹은 부분이 정말 많다는 것이다
처음 들어보는 용어가 많아서 아직 멀었구나 싶었다
하지만 일단은 완강을 자축하고.. 엄두도 안나는 백준과 코테를 하러 가봐야겠다