ROKO
[Python] Error 본문
728x90
python에는 exception class를 상속받은 기본 bulit-in error들이 있다.
https://docs.python.org/ko/3/library/exceptions.html
내가 프로그래밍 중 error 호출을 통해 위험관리를 하고 싶을 때 어떻게 해야할까?
raise Errortype
여러가지 에러중 코드에 적절한 에러를 고르고 에러와 동시에 출력하고 싶은 문구가 있다면 같이 적어주면 된다.
raise TypeError('변수 type을 맞춰주세요.')
당연히 전역에서 이 코드가 실행되면 프로그램이 항상 에러가 발생할테니 if문을 통해 error구문을 처리해줘야한다. 하지만 처리해야할 error가 너무 많아 if-else문이 길어지게 되는것 또한 좋은 현상이 아니다.
이런 경우를 어느 정도 해소하는 방법이 있다.
assert
assert와 함께 조건문을 쓰면 해당 조건문이 True일때는 아무 일도 일어나지 않고 False일 경우 error가 발생한다. 즉 if-else문을 통해 길게 작성할 필요가 없는것이다.
assert num.isnumeric(), '정수가 아닙니다.type을 맞춰주세요'
exception handling
error를 항상 처리하는것이 아닌 예외처리로 무시할수도 있다.
try-except 문을 이용해 처리를 하는데 간략히 알아보자.
try:
실행할 코드
except:
error발생시 실행할 코드
하지만 위와 같은 코드는 모든 error에 대해서 같은 실행코드가 진행된다.
- 모든 에러에 대응할수 있는 코드가 하나면 충분할까?
- 모든 에러를 고려할 것인가?
이 두 가지 문제점이 있기에 내가 고려할 error를 정확히 명시해 주는게 좋다.
try:
실행할 코드
except ValueError:
ValueError 발생시 실행할 코드
ValueError에 대해서만 처리를 하도록 코드를 수정하였다. 다른 error가 발생한다면 except문 실행없이 error 구문만 출력될 것이다.
여러가지 Error에 대해 처리를 하고싶은 경우 tuple로 묶어주면 된다.
try:
실행할 코드
except (ValueError, ZeroDivisionError):
ValueError, ZeroDivisionError 발생시 실행할 코드
728x90
'Computer Science > Programming Language' 카테고리의 다른 글
[Python] lazy evaluation (0) | 2023.03.04 |
---|---|
[Python] Comprehension (0) | 2023.03.04 |
[Python] decorator (0) | 2023.03.04 |
[Python] lambda (0) | 2023.03.04 |
Comments