Python 예외: 단계별 예제

Python 예외: 단계별 예제

프로그래머는 코드에서 오류나 예외가 발생할 수 있는 상황에 직면할 수 있으므로 코드에서 다양한 유형의 오류를 처리하는 방법을 이해하는 것이 중요합니다. 오류 처리는 코딩 주기의 중요한 부분입니다. Python에서 오류를 처리하는 일반적인 방법 중 하나는 try-except 기술을 사용하는 것입니다.

Python try-except 기술은 try 블록과 except 블록으로 구성됩니다. try 블록에는 오류나 예외를 생성할 수 있는 코드가 포함되어 있고, except 블록에는 이러한 오류나 예외를 처리하는 코드가 포함되어 있습니다.

Python 예외: 단계별 예제

코드가 try 블록 내에서 아무 문제 없이 실행되면 except 블록이 무시됩니다. 그러나 try 블록 내에서 오류나 예외가 발생하면 except 블록에 작성한 코드가 실행되어 문제를 해결합니다.

이 기사에서는 Python의 try-expect 블록, 코드를 작성할 때 발생할 수 있는 다양한 유형의 오류 및 예외, try-except 문을 사용하여 이러한 오류를 처리하는 방법에 대해 설명합니다 .

그것에 들어가자!

목차

Python의 오류 유형은 무엇입니까?

Python에서 오류는 크게 두 가지 주요 유형으로 분류할 수 있습니다.

1. 구문 오류 : 코드의 잘못된 문법으로 인해 발생하는 구문 분석 오류라고도 합니다. 구문 오류는 Python 인터프리터에 의해 감지되고 프로그램 실행을 중단합니다.

다음은 Python의 구문 오류의 예입니다.

print("Hello, world!"

이 예에서는 닫는 괄호가 없기 때문에 Python은 이 명령을 이해하지 못하므로 구문 오류입니다.

Python 예외: 단계별 예제

예외 : 코드가 구문적으로 올바르더라도 프로그램 실행 중에 무언가 잘못되면 예외가 발생합니다. 여기에는 잘못된 입력 또는 0으로 나누기와 같은 논리적 오류 또는 런타임 오류가 포함될 수 있습니다.

다음 함수는 Python에서 예외의 예입니다.

print(5 / 0)

이 코드 줄은 숫자를 0으로 나누려고 할 때 발생하는 ZeroDivisionError 예외를 발생시킵니다.

Python 예외: 단계별 예제

위 이미지에서 5를 0으로 나누었을 때 예외가 발생한 것을 볼 수 있습니다.

이제 Python에 어떤 예외가 있는지 이해했으므로 Python에서 Try-Except 문을 사용하여 예외를 처리하는 방법을 살펴보겠습니다. 다음 섹션에서 Python의 Try 및 Except 블록 구문을 살펴보겠습니다.

Try 및 except 블록의 구문은 무엇입니까?

함수의 구문은 인수와 반환 항목을 포함하여 코드에서 해당 함수를 사용하는 방법을 정의합니다.

우리는 아래에 else 절 및 finally 블록 과 함께 try 절 및 except 블록의 구문을 나열했습니다 .

1. Try 문의 구문

try 문을 사용 하면 코드 블록의 오류를 테스트할 수 있습니다. try 블록 내에 코드를 작성하면 Python은 프로그램의 정상적인 부분으로 코드를 실행합니다.

try 문을 사용하려면 코드를 try 블록 안에 넣기만 하면 됩니다.

try: # Your code here

2. except 절의 구문

except 절 try 블록 을 실행하는 동안 발생할 수 있는 오류를 처리합니다 . catch하려는 예외 유형을 지정하거나 일반 except 문을 사용하여 모든 예외를 처리할 수 있습니다.

다음 구문은 특정 예외 유형을 보여줍니다.

try: # Your code here except ValueError: # Handle ValueError exception

일반적인 예외 클래스 또는 여러 예외를 처리하려면 아래 제공된 구문을 사용할 수 있습니다.

try: # Your code here except Exception: # Handle any exception

3. Else 절/블록의 구문

else 절을 ​​사용하면 try 블록에 오류 없을 때 코드 블록을 실행할 수 있습니다 .

else 절을 ​​사용하려면 아래와 같이 except 블록 뒤에 배치하면 됩니다 .

try: # Your code here except ValueError: # Handle ValueError exception else: # Code to execute when there are no errors

4. 최종 블록 구문

finally 블록 을 사용하면 tryexcept 블록 의 결과에 관계없이 코드를 실행할 수 있습니다 . 이는 예외 발생 여부에 관계없이 수행하려는 작업에 유용할 수 있습니다.

finally 블록을 사용하려면 else 블록 뒤에 배치하면 됩니다 .

try: # Your code here except ValueError: # Handle ValueError exception else: # Code to execute when there are no errors finally: # Code to execute regardless of the result of the try and except blocks

위의 구문이 작동하는 것을 보기 위해 Python에서 try-except 블록을 사용하여 예외를 처리하는 예를 살펴보겠습니다.

Python에서 Try-Except로 예외 처리

오류가 발생하면 Python은 일반적으로 중지하고 오류 메시지를 생성합니다. tryexcept 블록을 사용하여 여러 예외를 처리할 수 있습니다 .

아래 예에서는 이전에 5를 0으로 나눌 때 생성된 0으로 나누기 오류를 처리합니다.

try: print(5 / 0) except ZeroDivisionError: print("You can't divide by zero!")

이 코드에서는 예외가 발생하지만 프로그램은 계속 실행되고 "0으로 나눌 수 없습니다!"를 출력합니다. 오류로 중지하는 대신.

Python 예외: 단계별 예제

tryexcept 블록을 사용하면 프로그램의 흐름을 제어할 수 있습니다. 특정 예외를 처리하면 사용자에게 유용한 피드백을 제공하고 오류가 발생해도 프로그램을 계속 실행할 수 있습니다.

위의 예에서 ZeroDivisionError 내장 예외를 사용하여 사례를 처리했음을 알 수 있습니다. 이와 유사하게 다른 유형의 기본 제공 예외도 있습니다.

이러한 예외 유형에 익숙하면 Python 코드에서 오류가 발생할 때 사용할 예상을 결정하는 데 도움이 되므로 다음 섹션에서 몇 가지 예외를 살펴보겠습니다.

기본 제공 예외 유형은 무엇입니까?

Python에서 예외는 BaseException 클래스에서 파생된 클래스의 인스턴스입니다. 오류가 감지되면 Python은 예외를 발생시킵니다. Python으로 프로그램을 작성하는 동안 발생할 가능성이 있는 몇 가지 기본 제공 예외가 있습니다.

가장 일반적인 몇 가지를 살펴보겠습니다.

  1. ZeroDivisionError: 숫자를 0으로 나누려고 할 때 발생합니다.

  2. NameError: 정의되지 않은 변수나 함수를 사용하려고 할 때 발생합니다.

  3. ValueError : 올바른 유형의 인수를 전달했지만 값이 올바르지 않은 경우 발생합니다.

  4. TypeError : 잘못된 데이터 유형의 인수를 전달할 때 발생합니다.

  5. FileNotFoundError : 존재하지 않는 파일을 열거나 액세스하려고 할 때 발생합니다.

  6. ImportError : 존재하지 않거나 찾을 수 없는 모듈이나 패키지를 가져오려고 할 때 발생합니다.

기타 관련 예외는 다음과 같습니다.

  1. OverflowError: 이 오류는 계산 결과가 너무 커서 표현할 수 없을 때 발생합니다.

  2. FloatingPointError: 부동 소수점 연산이 실패할 때 발생합니다.

  3. IndexError: 시퀀스 범위를 벗어난 인덱스(예: 목록 또는 튜플)에 액세스하려고 할 때 발생합니다.

  4. KeyError: 사전에 없는 키에 액세스하려고 할 때 발생합니다.

  5. EOFError: Python이 일반적으로 read() 호출에서 입력을 읽는 동안 파일 끝(EOF)을 만날 때 발생합니다.

  6. ArithmeticError: ZeroDivisionError, OverflowError 및 FloatingPointError와 같은 산술 예외에 대한 슈퍼 클래스입니다.

경우에 따라 예외가 예상되는 블록에서 pass 문과 같은 사용자 정의 예외를 사용해야 할 수도 있습니다 . 이는 다른 예외를 억제할 수 있으므로 신중하게 수행해야 합니다.

Python 프로그램을 작성할 때 가능한 예외를 처리하기 위한 지침 으로 사용할 수 있도록 위의 일반적인 예외 오류 목록을 제공했습니다 .

대부분의 예외를 포착하고 처리할 수 있지만 다른 예외 사례의 중첩 처리를 피하기 위해 가장 최근 호출을 처리하는 데 주의를 기울여야 합니다.

다음 섹션에서는 Python에서 try-except 블록의 몇 가지 사용 사례를 살펴보겠습니다 . 그것에 들어가자!

Try-Except 블록의 5가지 사용 사례

Try Except 블록은 오류를 처리하는 데 널리 사용되는 기술 중 하나입니다. 다음은 Python에서 Try Except 블록의 사용 사례 중 일부입니다.

1. 예외를 시도하여 파일 처리

파일로 작업할 때 항상 파일이 존재하지 않거나 스크립트가 액세스하려는 위치에 없을 가능성이 있습니다.

다음 코드는 존재하지 않는 파일을 열려고 할 때 예외를 발생시킵니다.

try: with open('file.txt', 'r') as file: print(file.read()) except FileNotFoundError: print('Sorry, this file does not exist.')

이 코드에서는 'file.txt'라는 파일을 열고 읽으려고 합니다. 'file.txt'가 존재하지 않으면 예외가 발생하지만 프로그램을 중지하는 오류 대신 '죄송합니다. 이 파일은 존재하지 않습니다.'라고 인쇄됩니다.

Python 예외: 단계별 예제

2. 예외를 시도하여 사용자 입력 처리

사용자 입력은 예외가 자주 발생하는 또 다른 영역입니다. 사용자는 예상치 못한 형식으로 데이터를 제공하거나 허용 범위를 벗어난 입력을 제공할 수 있습니다.

다음 예제에서는 try-except 블록으로 사용자 입력을 처리하는 방법을 보여줍니다.

try: age = int(input("Enter your age: ")) except ValueError: print("That's not a valid age. Please enter a number.")

이 코드에서는 사용자에게 나이를 입력하도록 요청합니다. 정수로 변환할 수 없는 항목(예: 단어 또는 문자)을 입력하면 예외가 발생하지만 프로그램이 충돌하는 대신 'That's not a valid age'가 인쇄됩니다. 숫자를 입력하세요.'

Python 예외: 단계별 예제

3. 존재하지 않는 사전 키에 액세스

Python에서 사전은 각 키가 고유해야 하는 변경 가능한 키-값 쌍의 정렬되지 않은 모음 입니다.

사전에 존재하지 않는 키에 액세스하려고 하면 Python에서 KeyError가 발생합니다. 아래 예와 같이 try 및 except를 사용하여 이 예외를 처리할 수 있습니다.

dictionary = {"key1": "value1", "key2": "value2"} try: print(dictionary["key3"]) except KeyError: print("The key does not exist in the dictionary.")

이 코드에서는 사전에서 'key3'에 대한 값을 인쇄하려고 합니다. 사전에 'key3'이 없으면 예외가 발생하지만 프로그램이 오류로 중지되는 대신 'The key does not exist in the dictionary'를 출력합니다.

Python 예외: 단계별 예제

4. 문자열을 정수로 변환

문자열을 정수로 변환하고 싶을 때가 있습니다 . 그러나 문자열이 유효한 정수를 나타내지 않으면 Python은 ValueError를 발생시킵니다.

이 경우를 처리하기 위해 try 및 except를 사용할 수 있습니다.

try: num = int("hello") except ValueError: print("That string can't be converted to integer.")

이 경우 'hello'는 정수로 변환할 수 없으므로 Python은 ValueError를 발생시키고 'That 문자열은 정수로 변환할 수 없습니다.'를 인쇄합니다.

Python 예외: 단계별 예제

5. 모듈 가져오기

Python에서 모듈을 가져올 때 모듈이 존재하지 않거나 설치되지 않았을 수 있습니다. 그런 경우 Python은 ImportError를 발생시킵니다.

이 경우를 처리하려면 다음 코드를 사용할 수 있습니다.

try: import some_module except ImportError: print("The module 'some_module' is not installed.")

위의 예에서 'some_module'이 설치되지 않았거나 존재하지 않으면 Python은 ImportError를 발생시키고 'The module 'some_module' is not installed.'을 출력합니다.

Python 예외: 단계별 예제

Python으로 코드를 작성하고 기대치를 처리하는 방법에 대해 자세히 알아보려면 다음 비디오를 확인하십시오.

다음으로 예외 처리를 위한 몇 가지 모범 사례를 살펴보겠습니다. 그것에 뛰어 들자!

예외 처리 모범 사례

이 섹션에서는 예외 처리 블록을 사용하여 예외를 처리하는 몇 가지 모범 사례를 나열했습니다 . 예외 처리를 위한 몇 가지 모범 사례는 다음과 같습니다.

1. 예외를 구체적으로 명시하십시오.

코드를 작성할 때 가능한 한 구체적으로 예외를 포착하는 것이 중요합니다. 이는 일반적인 예외 이름을 포착하는 대신 예상되는 실제 유형의 예외를 포착해야 함을 의미합니다.

이렇게 하면 어떤 종류의 오류가 발생했는지 정확히 알 수 있고 적절하게 처리할 수 있습니다.

2. 예외를 억제하지 않는다

예외를 처리할 때 예외 처리기로 예외를 포착하고 아무 작업도 수행하지 않으려는 유혹을 느낄 수 있습니다. 이것은 일반적으로 나쁜 생각입니다.

오류가 발생하면 일반적으로 수정해야 할 사항이 있기 때문입니다. 예외 클래스를 표시하지 않으면 오류가 눈에 띄지 않고 나중에 문제가 발생할 수 있습니다.

3. 마지막으로 정리 코드에 사용

때로는 오류 발생 여부에 관계없이 실행해야 하는 일부 코드가 있습니다. 이것은 파일을 닫거나 일부 리소스를 해제하는 것과 같은 것일 수 있습니다.

이 경우 finally 블록을 사용할 수 있습니다. finally 블록 내부의 코드는 무슨 일이 있어도 실행되므로 정리 코드를 넣기에 좋은 곳입니다.

try: # Some code here finally: # This code will run no matter what

4. 필요한 경우 예외 발생

코드 사용자에게 문제가 발생했음을 알려야 하는 상황이 있을 수 있습니다.

이러한 경우 예외를 발생시킬 수 있습니다. 이렇게 하면 코드 실행이 즉시 중지되고 사용자에게 오류가 발생했음을 알립니다.

if not valid_input: raise ValueError("Your input was not valid!")

이러한 모범 사례를 이해하고 구현하면 코드가 더욱 강력해지고 디버그하기 쉬워지며 예기치 않은 충돌을 방지할 수 있습니다.

마지막 생각들

결론적으로 Python에서 try 및 except를 사용하는 방법을 아는 것은 코드를 작성하고 예외가 발생할 때 정말 도움이 됩니다.

프로그램이 갑자기 멈추는 대신 오류를 원활하게 처리할 수 있습니다. 코드가 놀라움을 처리하고 계속 진행할 수 있도록 하는 방법입니다.

또한 try 및 except를 사용하면 무엇이 잘못될 수 있는지에 대해 실제로 생각하고 준비하고 있음을 보여줍니다. 그러니 시간을 내어 이러한 도구를 배우십시오. Python으로 코드를 작성할 때 매우 유용합니다!


파이썬에서 자기란 무엇인가: 실제 사례

파이썬에서 자기란 무엇인가: 실제 사례

파이썬에서 자기란 무엇인가: 실제 사례

R에서 RDS 파일을 저장하고 로드하는 방법

R에서 RDS 파일을 저장하고 로드하는 방법

R의 .rds 파일에서 개체를 저장하고 로드하는 방법을 배웁니다. 이 블로그에서는 R에서 LuckyTemplates로 개체를 가져오는 방법도 다룹니다.

첫 N 영업일 재방문 – DAX 코딩 언어 솔루션

첫 N 영업일 재방문 – DAX 코딩 언어 솔루션

이 DAX 코딩 언어 자습서에서는 GENERATE 함수를 사용하는 방법과 측정값 제목을 동적으로 변경하는 방법을 알아봅니다.

LuckyTemplates에서 다중 스레드 동적 시각적 개체 기술을 사용한 인사이트 쇼케이스

LuckyTemplates에서 다중 스레드 동적 시각적 개체 기술을 사용한 인사이트 쇼케이스

이 자습서에서는 다중 스레드 동적 시각적 개체 기술을 사용하여 보고서의 동적 데이터 시각화에서 통찰력을 만드는 방법을 다룹니다.

LuckyTemplates의 컨텍스트 필터링 소개

LuckyTemplates의 컨텍스트 필터링 소개

이 기사에서는 필터 컨텍스트를 살펴보겠습니다. 필터 컨텍스트는 모든 LuckyTemplates 사용자가 처음에 배워야 하는 주요 주제 중 하나입니다.

LuckyTemplates 온라인 서비스에서 앱을 사용하기 위한 최고의 팁

LuckyTemplates 온라인 서비스에서 앱을 사용하기 위한 최고의 팁

LuckyTemplates Apps 온라인 서비스가 다양한 소스에서 생성된 다양한 보고서 및 인사이트를 관리하는 데 어떻게 도움이 되는지 보여주고 싶습니다.

시간 경과에 따른 이익 마진 변화 분석 - LuckyTemplates 및 DAX를 사용한 분석

시간 경과에 따른 이익 마진 변화 분석 - LuckyTemplates 및 DAX를 사용한 분석

LuckyTemplates에서 측정 분기 및 DAX 수식 결합과 같은 기술을 사용하여 수익 마진 변경을 해결하는 방법을 알아봅니다.

DAX Studio의 데이터 캐시에 대한 구체화 아이디어

DAX Studio의 데이터 캐시에 대한 구체화 아이디어

이 자습서에서는 데이터 캐시의 구체화 아이디어와 결과 제공 시 DAX 성능에 미치는 영향에 대해 설명합니다.

LuckyTemplates를 사용한 비즈니스 보고

LuckyTemplates를 사용한 비즈니스 보고

지금까지 Excel을 계속 사용하고 있다면 지금이 비즈니스 보고 요구 사항에 LuckyTemplates를 사용하기 시작하는 가장 좋은 시기입니다.

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것