프로그래밍을 하다보면 언제나 마주하게되는 오류들
처음에 오류를 마주치게 됐을 때, 세상이 무너지는 기분이었다
하지만 지금 쪼렙개발자로서 자잘한 오류정도는 찾아서 스스로 수정을 할 수 있는 사람이 되었다
지금도 '외 않되?' 하는 경우가 많지만, 오류와 예외처리에 대해 알아보려한다
프로그램이 오작동을 하거나 비정상적으로 종료되는 경우를 말한다
발생시점에 따라 '컴파일 에러(compile-time error)', '런타임 에러(runtime error)'로 나눌 수 있다. 컴파일에 문제가 없고, 실행도 잘 되지만 의도한 것과 다르게 동작하는 '논리적 에러(logical error)'가 있다
- 컴파일 에러 : 컴파일 시에 발생하는 에러
- 런타임 에러 : 실행 시에 발생하는 에러
- 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것
이 모든 에러들을 안겪어본 개발자는 없을 것이라 생각한다
지금도 현업에서 개발을 하면서 에러를 하루에도 수십번씩 마주하는 것 같다 😅
개발을 하다보면 항상 만나는 'Exception'
Error와 Exception은 내 심장을 철렁하게 만드는 공통점이 있지만 미세하게 다른 개념이다
- Error : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
- Exception : 프로그램 코드에 의해서 수습될 수 없는 다소 미약한 오류
Exception도 Class의 일종이며, Exception을 상속하는 다양한 Exception이 존재한다
Exception Class와 그 하위에있는 RuntimeException Class로 크게 나눌 수 있다
- Exception Class : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
- RuntimeException Class : 프로그래머의 실수로 발생하는 예외
Exception은 개발자가 미리 예외처리하여 미연에 방지할 수 있다
예외처리의 목적은 exception의 발생으로 인한 실행 중인 프로그램의 갑작스런 비정상 종료를 막고, 정상적이 실행상태를 유지할 수 있도록 하는 것이다
예외처리를 하기 위해서는 try - catch문을 사용한다
try {
// 예외가 발생할 가능성이 있는 코드
} catch (Exception e) {
// e가 발생했을 경우, 이를 처리하기 위한 코드
}
try문을 실행한 뒤, 해당 exception이 발생하면 catch문을 실행한다
Java/Spring을 공부하면서 직접적으로 try - catch문을 직접 작성해 본적은 없었다
주로 throw로 exception을 처리해주었는데, 고작 열흘이지만 실제 현업에서 개발을 해보니 예외처리를 해야하는 상황이 많이 있었다
사용자가 어떤 동작을 하게 될지 모르기 때문에 더 많이 고민해서 예외처리를 해주어야 하는 것 같다
예를 들어 사용자에게 입력받은 String으로 된 날짜를 LocalDateTime으로 변환하여 DB에 저장하여야 했는데, 내가 처리할 수 있는 날짜 포맷은 'yyyy-MM-dd'여야하는데 포맷이 맞지않다면 String에서 LocalDateTime 형변환을 할 때, LocalDateTime Exception이 발생한다
그 때 try - catch문을 이용하여 예외처리를 해주어 날짜를 확인해주세요
라는 메세지를 반환하여 다시 처리했다
try - catch문의 기본개념만 알고 직접 작성하는 것은 이번이 처음이었는데, 이제 잘 할 수 있지 않을까?
잘 하고 싶은 마음은 가득한데 시간이 한정적이라 이런식으로 부딪히는 문제들 부터 하나씩 헤쳐나가보려 한다
허걱... 벌써 많은 것을 배우신 것 같네요...