카테고리 없음

인공지능과 미래사회(예외처리)

20308박동진 2023. 6. 21. 02:46
기타 오류처리란?

- 오류를 회피할 수도 일부러 발생시킬 수도 있는 기법

- 유연한 프로그래밍을 위해 사용되며, 솔직히 필자기준 없어도 된다고 생각되는 기법.

- 프로그램이 잘못 동작하는 것을 막기 위한 파이썬의 배려를 무시하는 기법.

- 물론 몇몇 짜증나는 오류들은 없애면 기분이 좋다. 하지만 찜찜한 기분이 남는 건 온전히 본인 몫임.

- 예외의 경우를 미리 생각해서 그것을 처리할 수 있게끔 코드를 삽입해 주는 것.

- 대표적인 오류로는

*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"으로 설정했습니다.