-
반응형
이번 포스팅은 오류를 직접 발생 시키는 방법에 대한 내용입니다.
오류가 나지 않아야 하는데 일부러 오류를 발생 시킨다? 이해가 가지 않을 것 입니다.
하지만 예제를 보면 왜 이런 구문을 만들었는지 이해 하실 것 입니다.
본 포스팅은 예외 처리 try except 구문에 대한 내용을 알고 있어야 합니다.
만약 잘 모르시면 이전 포스팅을 먼저 참고해 주세요.
2020/07/29 - [IT 이야기 공간/프로그램 언어] - 파이썬(python) 오류 예외 처리(try, except, finally)
먼저 오류를 발생시키기 전 오류를 무시하는 방법에 대해 알아봅니다.
이전 포스팅에서 예제로 사용했던 error_test.py 를 error_test1.py 로 복사합니다.
이전 내용을 아래 예제와 같이 수정합니다.
from datetime import datetime
dtval = input( '시간 입력:YYYY-MM-DD.hh:mm:ss ' )
try:stime = datetime.strptime( dtval, '%Y-%m-%d.%H:%M:%S' )
print("입력일자:%s" % dtval )
pass
except ValueError as err:CMD 창을 열어서 소스 파일이 있는 디렉토리로 이동 한 후 예제를 실행해 봅니다.
아래와 같이 날짜 형식이 맞이 않게 입력을 해도 오류 발생시 무시하는 pass 구문이 있어서 오류가 무시되어 아무 결과도 출력하지 않습니다.
C:\py_test>python error_test1.py
시간 입력:YYYY-MM-DD.hh:mm:ss 2020
위의 예제와 같이 오류를 무시하려면 except 구문에 pass 를 사용하면 됩니다.
이제 다시 원래 해 보려고 했던 일부러 오류를 발생 시키기에 대한 내용입니다.
오류를 발생 시키려면 raise를 사용하면 됩니다.
raise 사용 예제 ( error_raise.py)
try:
x = int(input('짝수를 입력하세요: '))
if x % 2 != 0: raise Exception('짝수가 아닙니다.')
print("입력한 숫자는 %d 입니다." % x)
except Exception as e:print('오류 내역:', e)
위의 예제는 숫자를 입력 받아 2로 나누어서 나머지가 0이 아니면 오류를 발생 시키는 예제 입니다.
먼저 동작 확인을 위해 명령창(CMD) 에서 실행해 봅니다.
정상 동작 확인을 위해 짝수를 입력합니다.
C:\py_test>python error_raise.py
짝수를 입력하세요: 4
입력한 숫자는 4 입니다.
오류를 발생 시키기 위해 홀수를 입력합니다.
아래 결과에서 raise 구문이 실행되었고 다름의 except 구문에서 Exception 이기 때문에 “오류 내역…..” 을 출력하였습니다.
기본 try except 구문과 마찬가지로 오류가 발생되는 시점의 구문 까지만 실행되므로 “입력한 숫자는…..” 은 출력되지 않았습니다.
C:\py_test>python error_raise.py
짝수를 입력하세요: 5
오류 내역: 짝수가 아닙니다raise Exception 에서 Exception 대신 다른 오류 코드를 넣어도 됩니다.
raise 를 함수 안에서 사용해도 호출한 구문에 try except 가 있으면 위의 예제와 같이 동작합니다.
무슨 말인지 예제를 통해 알아봅니다.
위의 예제 error_raise.py 를 아래와 같이 수정합니다.
def even_num( ):
x = int(input('짝수를 입력하세요: '))
if x % 2 != 0: raise Exception('짝수가 아닙니다.')
print("입력한 숫자는 %d 입니다." % x)
try:even_num( )
except Exception as e:
print('오류 내역:', e)실행해 봅니다. 실행 방법은 위의 예제와 동일합니다.
정상 동작 확인을 위해 짝수를 입력합니다.
C:\py_test>python error_raise.py
짝수를 입력하세요: 4
입력한 숫자는 4 입니다오류를 발생시키기 위해 홀수를 입력합니다.
C:\py_test>python error_raise.py
짝수를 입력하세요: 5
오류 내역: 짝수가 아닙니다.
첫번째 예제와 결과가 동일 합니다.
참고로 위의 예제는 raise를 사용하지 않아도 가능한 코드 입니다.
프로그램 작성시 더 유용한 방법으로 작성하면 됩니다.
raise를 사용하는 것이 더 유용할 경우도 있으니 사용법을 알아 두시면 좋습니다.
위의 예제를 raise 를 사용하지 않고 같은 결과를 얻을 수 있는 코드를 작성해 보았습니다. 참고해 주세요.
예제 error_check.py
def even_num( ):
x = int(input('짝수를 입력하세요: '))
if x % 2 != 0:
return False
print("입력한 숫자는 %d 입니다." % x)
return True
if even_num( ) == False:
print('오류 내역:', '짝수가 아닙니다’)
동일한 방법으로 실행하여 결과를 확인합니다.
C:\py_test>python error_check.py
짝수를 입력하세요: 4
입력한 숫자는 4 입니다.
C:\py_test>python error_check.py
짝수를 입력하세요: 5
오류 내역: 짝수가 아닙니다
프로그램 작성 방법은 매우 다양합니다. 각자 적절한 코드를 가독성 높고, 가볍고, 성능이 좋은 프로그램을 작성하는 것이 좋은 작성 방법입니다.
반응형'IT 이야기 공간 > 프로그램 언어' 카테고리의 다른 글
파이썬(python) 순환 로그 파일 저장 및 관리 logging (0) 2020.08.02 파이썬(python) 외부 파일을 통한 환경 설정관리 ConfigParser (0) 2020.07.31 파이썬(python) 오류 예외 처리(try, except, finally) (0) 2020.07.29 파이썬(Python) 모듈(module) 만들기 (0) 2020.07.28 파이썬(Python) 파일 입출력 #4 쓰기 (0) 2020.07.07