기타 오류처리란?
- 오류를 회피할 수도 일부러 발생시킬 수도 있는 기법
- 유연한 프로그래밍을 위해 사용되며, 솔직히 필자기준 없어도 된다고 생각되는 기법.
- 프로그램이 잘못 동작하는 것을 막기 위한 파이썬의 배려를 무시하는 기법.
- 물론 몇몇 짜증나는 오류들은 없애면 기분이 좋다. 하지만 찜찜한 기분이 남는 건 온전히 본인 몫임.
- 예외의 경우를 미리 생각해서 그것을 처리할 수 있게끔 코드를 삽입해 주는 것.
- 대표적인 오류로는
*SyntaxError : 잘못된 문법이나 표현(invalid syntax)
*IndentationError : 들여쓰기 실수(IndentationError: expected an indented block)
*ZeroDivisionError : 0으로 다른 수를 나누려 함(ZeroDivisionError : integer division or modulo by zero)
*etc
- 대표적인 오류처리문은 try ~ except, try ~ else, try ~ finally 문이 있음.(진짜 직관적인 문법)
(else 는 오류가 아닐 때 출력되고, finally는 마지막 한 번 무조건 출력된다.)
try:
10 / 0
except ZeroDivisionError as e:
print(e)
else:
print("Success!")
finally:
print("ZeroDivisionError Check")
-->
division by zero
ZeroDivisionError Check
try:
10 / 2
except ZeroDivisionError as e:
print(e)
else:
print("Success!")
finally:
print("ZeroDivisionError Check")
--?
Success!
ZeroDivisionError Check
오류를 회피하는 방법 :
try:
10 / 0
except ZeroDivisionError:
pass
위 코드의 예시는 ZeroDivisionErro로, 이는 모든 숫자를 0으로 나누려고 할 때 나타나는 오류이다.
try ~ except as 문에 pass를 사용하면, 오류를 회피할 수 있다.
'try : (원하는 코드) except 발생오류 as 오류변수 :' 형태로 사용되며, 코드가 실행되면, '오류 변수' 에 담기는 오류 메시지를 출력할 수 있다.
오류를 발생시키는 방법
try:
raise NameError
except NameError:
print("NameError occurred")
말 그대로 오류를 발생시키는 방법으로, 솔직히 왜 필요한지는 잘 모르겠지만, 인터넷의 힘을 빌려보자면... 모르겠습니다.
여튼 raise라는 명령어를 사용하영 작성하며, 오류를 일부러 발생시키고 그 오류의 내용을 "NameError occurred"으로 설정했습니다.