Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python 예외:가이드

예외는 Python 인터프리터와 수동으로 발생할 수 있습니다. 기본 제공 예외는 프로그램의 일반적인 오류를 잡는 데 도움이 됩니다.

이 가이드에서는 예외가 무엇이며 어떻게 사용되는지 논의할 것입니다. 코드에서 작업할 수 있도록 예외를 발생시키는 방법의 예를 살펴보겠습니다.

예외란 무엇입니까?

논리 오류라고도 하는 예외는 프로그램 런타임 중에 발생하는 오류입니다.

Python에는 구문 오류와 런타임 오류의 두 가지 유형의 오류가 있습니다. 프로그램이 실행되기 전에 구문 오류가 발생합니다. 프로그램에서 구문 오류가 발생하면 프로그램을 실행할 수 없습니다. 이는 Python이 구문 오류가 포함된 코드를 해석할 수 없기 때문입니다.

예외라고도 하는 런타임 오류는 Python이 프로그램을 실행하는 동안 발생합니다. 프로그램의 30행에서 예외가 발생할 수 있습니다. 30행에서 예외가 발생하면 30행의 코드가 실행되고 프로그램이 중지됩니다.

다음은 예외의 예입니다.

Traceback (most recent call last):
  File "main.py", line 6, in <module>
	s_names.append(n)
AttributeError: 'str' object has no attribute 'append'

이 예외는 Python이 나머지 코드를 실행할 수 없음을 알려줍니다. 예외가 발생하면 메시지를 주의 깊게 읽어야 합니다. 오류 메시지는 오류를 해결하기 위해 알아야 할 사항 중 전부는 아니지만 대부분을 알려줍니다.

오류 메시지의 마지막 문장을 분석해 보겠습니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

AttributeError:'str' 개체에 'append' 속성이 없습니다.

이 경우 오류가 AttributeError라는 것을 알고 있습니다. 이것은 존재하지 않는 속성을 참조하려고 한다는 것을 의미합니다. 오류 메시지는 허용되지 않는 문자열 객체에 대해 append()를 사용하려고 한다고 알려줍니다.

문자열 객체는 append()를 지원하지 않기 때문에 메소드에서 다음 단계는 append()에 해당하는 항목을 찾는 것입니다. 문자열을 위해. 이것은 연결입니다. 이제 우리는 적용할 수 있는 프로그래밍 문제에 대한 잠재적인 솔루션을 갖게 되었습니다.

어디에서 예외가 발생합니까?

프로그래머가 코드에서 오류를 잡을 수 있도록 Python에는 다양한 기본 제공 예외가 있습니다. 이러한 예외는 코드에서 문제의 원인을 식별하여 문제를 해결하는 데 도움이 될 수 있습니다. 다음은 발생할 가능성이 높은 몇 가지 가장 일반적인 예외입니다.

  • TypeError:해당 함수를 지원하지 않는 유형의 객체에 함수를 적용하면 발생합니다. (예:TypeError:iterable에만 참여할 수 있음)
  • SyntaxError:프로그램이 실행되기 전에 발생하여 구문에 문제가 있음을 알려줍니다(예:SyntaxError:잘못된 구문).
  • KeyError:존재하지 않는 사전의 키를 참조하는 경우 발생합니다. (예:KeyError:"usb_ports")
  • ImportError:존재하지 않는 패키지 또는 존재하지 않는 패키지에서 함수를 가져오려고 하면 발생합니다.

Python 언어에서 발생할 수 있는 많은 예외 중 몇 가지만 나열했습니다.

예외를 발생시키는 방법

코드에서 사용자 정의 예외를 정의할 수 있습니다. 이는 Python에서 제공하는 내장 예외가 프로그램의 요구 사항에 적합하지 않은 경우에 유용할 수 있습니다.

게임의 암호를 확인하는 프로그램을 작성할 것입니다. 시작하려면 사용자에게 암호를 삽입하도록 요청해 보겠습니다.

password = input("Enter a password: ")

사용자의 비밀번호가 유효하려면 12자 이상이어야 합니다. 사용자의 비밀번호가 12자 이하인 경우 예외를 발생시키고 싶습니다.

이를 위해 if 문을 사용할 것입니다. 다음 if 문은 사용자가 선택한 암호가 12자 미만인지 확인합니다.

if len(password) > 12:
	print("Your password is valid.")
else:
	raise Exception("Your password is not the correct length.")

len() 메서드를 사용하여 사용자 암호의 길이를 계산합니다. 사용자가 잘못된 비밀번호를 입력하면 프로그램에서 "귀하의 비밀번호가 올바른 길이가 아닙니다."라는 메시지와 함께 예외가 발생합니다.

작동하는지 확인하기 위해 코드를 사용해 보겠습니다.

Enter a password: Bacon120
Traceback (most recent call last):
  File "main.py", line 6, in <module>
	raise Exception("Your password is not the correct length.")
Exception: Your password is not the correct length.

입력한 비밀번호는 12자 미만입니다. 잘못된 비밀번호를 입력했기 때문에 코드가 중지됩니다. 유효한 비밀번호로 프로그램을 실행해 봅시다:

Enter a password: Bacon120Bacon120
Your password is valid.

프로그램이 성공적으로 실행되었습니다.

예외 처리 방법

기본적으로 예외는 프로그램 실행을 중지합니다. 이것은 오류에 대한 솔루션을 강제로 찾기 때문에 유용하지만 예외가 발생한 경우 프로그램 실행이 중지되는 것을 원하지 않는 경우가 있습니다.

예를 들어 목록의 데이터 요소가 유효한지 확인하는 경우 잘못된 데이터 요소가 발견될 때마다 예외가 발생하지 않기를 원할 수 있습니다.

예외를 처리하기 위해 "try...except" 블록을 사용할 수 있습니다. 사전에서 항목을 찾는 프로그램을 작성해 보겠습니다. 이 사전에는 학급의 학생 이름 목록과 가장 최근 시험에서 해당하는 성적이 포함되어 있습니다.

시작하려면 학생 및 학년 정보가 포함된 사전을 정의해 보겠습니다.

data = {
	"Lucy": 73,
	"Carlton": 59,
	"Adam": 73
}

다음으로, 검색하려는 등급의 이름을 입력하도록 사용자에게 요청해 보겠습니다. 나중에 코드에서 예외를 처리할 수 있도록 "try" 블록 내에서 이 작업을 수행합니다.

try:
	student = input("Enter the name of the student whose grade you want to retrieve: ")
	print(data[student])

이 코드는 사용자가 프로그램에 삽입한 이름과 이름이 일치하는 학생의 성적을 인쇄합니다. 그러나 사용자가 잘못된 이름을 삽입하면 KeyError가 발생합니다.

우리는 코드에 예외 블록을 추가하여 이것을 처리할 것입니다:

try:
	student = input("Enter the name of the student whose grade you want to retrieve: ")
	print(data[student])
except:
	print("This student is not present in the list of grades.")

학생을 찾을 수 없으면 예외 절이 실행됩니다. 프로그램을 실행해 보겠습니다.

Enter the name of the student whose grade you want to retrieve: Lucy
73

유효한 학생 이름을 입력하면 프로그램이 작동합니다. 잘못된 학생 이름을 삽입하면 프로그램을 사용해 보겠습니다.

Enter the name of the student whose grade you want to retrieve: Kaitlin
This student is not present in the list of grades.

예외가 발생했지만 우리 프로그램은 멈추지 않습니다. 대신 "제외" 블록의 내용이 실행됩니다.

try...except 블록에 대해 자세히 알아보려면 Python try...except에 대한 가이드를 읽어보세요.

결론

예외는 코드에 논리적 오류가 있음을 알려줍니다. 예외가 발생하면 예외 유형, 예외가 발생한 위치 및 오류 메시지가 표시되어야 합니다. 이 정보를 사용하여 예외의 원인을 찾을 수 있습니다.

raise 문을 사용하여 고유한 예외를 발생시킬 수 있습니다. try...except 코드 블록을 사용하여 예외를 처리할 수 있습니다.

이제 전문가처럼 Python 예외를 해결하는 데 필요한 도구가 있습니다!