[인생 프로그래밍] 에러 메시지 읽는 법

Rex·2023년 1월 27일
1

인생 프로그래밍

목록 보기
17/33

에러 메시지 읽는 법

본격적으로 프로그래밍을 공부하기에 앞서, 가장 중요한 덕목을 한 가지 알려주고 싶다. 그것은 바로 에러 메시지를 읽는 방법이다. 에러 메시지를 잘 읽는 것은 실제로 프로그램을 개발하면서 평생토록 유지해야 할 기본 덕목 중 하나다.
우리들이 인생을 살면서 언제나 실수를 하는 것처럼 프로그래밍을 하면서도 수천 가지, 수만 가지 실수를 하게 된다. 실수가 발생했다면 그 실수의 원인을 파악하고 어떻게 고쳐야 할지 고민해 보는 것은 당연하다. 그래서 에러 메시지를 천천히 잘 읽어보는 것은 매우 중요하다.

에러 메시지를 제대로 읽으면 1분 만에 원인을 찾아서 해결할 수도 있지만, 제대로 읽지 않으면 24시간 동안 원인조차 찾지 못할 수도 있다. 읽으면 1분 vs 안 읽으면 24시간. 이렇게 중요한 에러 메시지를 귀찮다고 안 읽으면 프로그래밍을 할 수 없다. 게으른 프로그래머도 위대한 프로그램을 만들 수 있지만, 에러 메시지를 읽는 것도 귀찮을 만큼 게으른 프로그래머에게는 미래가 없다. 이것은 다른 일도 마찬가지다. 최소한의 미래가 있는 개발자가 되기 위해, 에러 메시지를 잘 읽는 방법을 설명하겠다.

아직 프로그래밍을 제대로 시작조차 하지 않았음에도 오류 메시지를 읽는 법부터 설명하는 이유는, 이것이 프로그래밍 인생 전반적으로 가지고 있어야 할 매우 중요한 기본기라는 이야기이다. 이 내용은 정말 중요한 내용이니 추후에 에러가 발생한다면 꼭 이 페이지로 돌아와서 다시 살펴보길 바란다.


Python's Error

에러 메시지를 의도적으로 출력하기 위해 test.py 라는 파일을 만들고 아래와 같은 소스코드를 작성해 보자. 아직 배우지 않은 문법이 들어있지만 그대로 따라 써보자.

print('프로그램이 시작되었습니다.')
def my_first_function():
    print(f'3을 0으로 나누면: {3/0}')

my_first_function()

위 코드를 실행하면 아래와 같은 결과가 출력될 것이다.

에러를 한 줄씩 읽어보자.

  1. "/Users/rex/ws/rex/fun/book/test.py" 라는 파일의 5번 라인에서 에러가 발생했다고 한다. 에러가 발생한 장소는 my_first_function() 이라고 말해주고 있다.
  2. 같은 파일의 3번 라인은 에러가 발생한 결정적인 위치다. 에러가 발생한 코드를 보여주고 있다.
  3. 마지막 문장에는 ZeroDivisionError: division by zero 라고 적혀있다. 0으로 나눴기 때문에 오류가 발생했다고 한다. 어떤 수를 0으로 나누는 것은 잘못된 것이기 때문에 이 부분을 수정하면 될 것 같다.

이런 식으로 프로그램이 에러가 난 위치와 이유가 잘 적혀있으니 반드시 꼼꼼히 읽어줘야 한다. 다시 말하지만 에러 메시지를 제대로 읽으면 1분 만에 원인을 찾아서 해결할 수 있지만, 제대로 읽지 않으면 24시간 동안 원인조차 찾지 못할 수도 있다.

혹시 영어로 되어 있어서 읽기가 힘든가? 걱정하지 말라. 우리에겐 최고의 학습 파트너, ChatGPT가 있다!


'ChatGPT' 를 적극 활용하자

'이 책의 효율적인 공부법' 에서 ChatGPT 를 적극적으로 활용하라고 이야기한 것을 기억하는가? ChatGPT 에 위에 출력된 에러 메시지를 그대로 복사해서 붙여 넣은 다음 "이게 무슨 에러야?" 라고 적어보겠다.

짠! 오류가 발생한 이유, 그리고 어떻게 해결하면 좋을지에 대해서 엄청나게 자세히 설명해 준다. 이처럼 ChatGPT 는 최고의 학습 파트너다. 이 책을 읽는 내내 반드시 적극적으로 활용하자. 혼자 공부할 때 보다 10배는 빠르게 지식을 습득할 수 있다.


JavaScript's Error

자바스크립트의 에러 메시지도 파이썬과 별반 다르지 않다. 대부분의 프로그래밍 언어에는 에러가 발생한 경우 특이한 경우가 아니라면 대부분 다음의 내용이 출력된다.

  1. 에러가 발생한 이유가 무엇인지
  2. 어느 지점에서 에러가 발생했는지
console.log('프로그램이 시작되었습니다.');
function myFirstFunction() {
    console.log(`선언되지 않은 변수를 사용하면: ${abc / 100}`);
}

myFirstFunction();

위의 코드를 실행시켜보면 아래와 같은 에러가 발생한다.

자바스크립트는 파이썬과 에러가 표시되는 순서가 조금 다르다. 파이썬은 어디에서 에러가 발생했는지가 먼저 나오고 에러의 이유가 마지막에 나왔는데, 자바스크립트는 에러의 이유가 먼저 나오고 그 다음에 어디에서 발생했는지에 대해서 알려준다. 대부분의 프로그래밍 언어는 이와 비슷한 형태로 에러 메시지가 출력된다. 그러니 당황하지 말고 천천히 읽어보면 된다.

그리고 이 또한 ChatGPT 에 그대로 복사해서 물어보면,

짠! 어떤가? ChatGPT 를 반드시 다양하게 활용하여 많은 도움을 받기를 바란다!


정리하기

  1. 에러 메시지의 형태
    • 대부분의 에러 메시지에는 에러가 발생한 이유와 위치가 출력된다.
  2. ChatGPT
    • 프로그래밍 중 막히는 부분이 있다면 망설이지 말고 ChatGPT 에게 꼭 물어보자. 질문을 상세하게 할 수록 좋은 답변을 얻을 가능성이 높아진다.

생각 해보기

인생에서 안 좋은 일이 일어나면 '왜 이런 일이 일어났지?' 고민하고 문제의 원인을 찾아 해결하려고 했을 것이다. 인생의 문제는 스스로 찾아야 하지만, 프로그래밍은 내가 무엇을 잘못했는지 알려준다.

에러 메시지를 꼼꼼히 읽는 것은 어쩌면 개발자 인생에서 가장 중요한 일 일 것이다. - Developer Rex


연습 문제

  1. 소스코드를 아무렇게나 입력해 보고, 실행한 뒤에 다양한 에러 메시지를 읽어보자.
  2. 그리고 그 에러 메시지를 분석해서 해결해 보자.
  3. 무슨 의미인지 잘 모르겠다면, 그 내용을 그대로 복사해서 ChatGPT 에게 물어보며 해결해 보자.
  • 지금 Python 과정을 하고 있다면, Python 으로 풀어야 한다.
  • Python 과정을 모두 마치고 JavaScript 를 시작했다면, JavaScript 로 풀어야 한다.
  • JavaScript 과정을 모두 마치고 Java 를 시작했다면, Java 로 풀어야 한다.
  • 너무 어려우면 ChatGPT 에게 도움을 요청하자.

궁금증 / 질문 / 개선점이 있다면 꼭 댓글을 달아주세요. 제가 최선을 다해 도와드리겠습니다. 여러분들의 최고의 학습 친구가 되어드리겠습니다.

#인생프로그래밍 #개발자렉스 #프로그래밍 #프로그래머 #개발자 #개발입문 #프로그래밍입문서적 #코딩교육 #코딩무료교육 #파이썬 #자바스크립트 #자바 #파이썬기초 #파이썬독학 #파이썬책 #혼자공부하는파이썬 #혼공파 #자바스크립트책 #앱개발 #어플개발 #ProgrammingOfLife #programming #programmer #coding #software #developer #python #javascript #java

profile
🔥 from Abstraction to Realization

0개의 댓글