English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Python에는 많은내장 예외그러나, 일부 오류가 발생할 때, 그들은 프로그램이 오류를 출력하도록 강제합니다.
때때이나, 사용자 정의 목적에 맞는 예외 처리를 생성할 필요가 있습니다.
Python에서 사용자는 새로운 클래스를 생성하여 이와 같은 예외를 정의할 수 있습니다. 이 예외 클래스는 Exception 클래스에서 직접 또는 간접적으로 파생되어야 합니다. 많은 내장 예외도 이 클래스에서 파생됩니다.
>>> class CustomError(Exception): ... pass ... >>> raise CustomError Traceback (most recent call last): ... __main__.CustomError >>> raise CustomError("An error occurred") Traceback (most recent call last): ... __main__.CustomError: An error occurred
여기서는 Exception 클래스에서 파생된 CustomError라는 이름의 사용자 정의 예외를 생성했습니다. 다른 예외와 마찬가지로, 이 새로운 예외를 발생시키기 위해 선택적 오류 메시지를 포함한 raise 문을 사용할 수 있습니다.
대형 Python 프로그램을 개발할 때는 프로그램이 발생시키는 모든 사용자 정의 예외를 별도의 파일에 저장하는 것이 좋습니다. 많은 표준 모듈이 이를 할 수 있습니다. 그들은 예외를 exceptions.py나 errors.py로 정의합니다.
사용자 정의 예외 클래스는 일반 클래스가 수행할 수 있는 모든 작업을 수행할 수 있지만, 우리는 일반적으로 그들을 간단하고 명확하게 만듭니다. 대부분의 구현은 사용자 정의 기본 클래스를 선언하고 그 기본 클래스에서 다른 예외 클래스를 파생시킵니다. 아래의 예제에서 이 개념을 더 명확하게 설명하겠습니다.
이 예제에서는 프로그램에서 사용자 정의 예외를 사용하여 오류를 발생시키고 캡처하는 방법을 설명하겠습니다.
이 프로그램은 사용자가 저장된 숫자를 맞추까지 숫자를 입력하도록 요청합니다. 그들의 추측이 저장된 숫자보다 크거나 작은지를 이해하도록 도와주기 위해 표시합니다.
# 파이썬 사용자 정의 예외 정의 class Error(Exception): """기타 예외의 기본 클래스""" pass class ValueTooSmallError(Error): """입력 값이 작으면 발생하는 예외""" pass class ValueTooLargeError(Error): """입력 값이 크면 발생하는 예외""" pass # 주 프로그램 # 사용자가 숫자를 맞추면 그만/그녀가 맞추면 그만 # 이 숫자를 맞추세요 number = 10 while True: try: i_num = int(input("숫자를 입력하세요: ")) if i_num < number: raise ValueTooSmallError elif i_num > number: raise ValueTooLargeError break except ValueTooSmallError: print("이 값이 너무 작습니다. 다시 시도해 주세요!") print() except ValueTooLargeError: print("이 값이 너무 큽니다. 다시 시도해 주세요!") print() print("축하합니다! 당신이 맞추셨습니다.")
이 프로그램의 예제 실행입니다.
숫자를 입력하세요: 12 이 값은 너무 큽니다. 다시 시도해 주세요! 숫자를 입력하세요: 0 이 값은 너무 작습니다. 다시 시도해 주세요! 숫자를 입력하세요: 9 이 값은 너무 작습니다. 다시 시도해 주세요! 숫자를 입력하세요: 10 축하합니다! 당신이 맞추셨습니다.
여기서 우리는 Error라는 기본 클래스를 정의했습니다.
여기서 우리는 ValueTooSmallError와 ValueTooLargeError라는 다른 두 개의 예외를 정의했습니다. 이는 파이썬 프로그래밍에서 사용자 정의 예외를 정의하는 표준 방법입니다만, 이 방법에 국한되지 않습니다.
이 페이지를 방문하여 자세히 알아보기파이썬에서 예외를 처리하는 방법。