ROKO

[Python] Error 본문

Computer Science/Programming Language

[Python] Error

RO_KO 2023. 3. 4. 14:05
728x90

python에는 exception class를 상속받은 기본 bulit-in error들이 있다.

https://docs.python.org/ko/3/library/exceptions.html

 

Built-in Exceptions

In Python, all exceptions must be instances of a class that derives from BaseException. In a try statement with an except clause that mentions a particular class, that clause also handles any excep...

docs.python.org

내가 프로그래밍 중 error 호출을 통해 위험관리를 하고 싶을 때 어떻게 해야할까?

raise Errortype

built-in error type

여러가지 에러중 코드에 적절한 에러를 고르고 에러와 동시에 출력하고 싶은 문구가 있다면 같이 적어주면 된다.

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