파이썬 에러 재실행 - paisseon eleo jaesilhaeng

다음과 같이 다수의 예외를 처리할 수 있습니다. 위에서 아래로 순차적으로 처리되며, 마지막의 try: x = 10 / 0 except: print("Exception occurred while dividing by 0")2가 try: x = 10 / 0 except: print("Exception occurred while dividing by 0")1, try: x = 10 / 0 except: print("Exception occurred while dividing by 0")4를 제외한 다른 모든 예외를 처리하게 됩니다.

try: x = 10 / 0 except ZeroDivisionError: print("Exception occurred while dividing by 0") except NameError: print("NameError exception occurred") except: print("A exception occurred")

3. 예외가 발생하지 않았을 때, 어떤 작업 수행

아래 코드는 예외가 발생하지 않습니다. 예외가 발생하지 않으면 Traceback (most recent call last): File "/home/js/python-example/try-example.py", line 1, in <module> x = 10 / 0 ZeroDivisionError: division by zero9의 코드는 실행되지 않습니다. 대신에 try: x = 10 / 0 except: print("Exception occurred while dividing by 0")6의 코드가 실행됩니다. 반대로 예외가 발생되면 except의 코드가 수행되며 else의 코드는 수행되지 않습니다.

파이썬 파트12. 예외처리 - try / except, raise26 Feb 2017 | python 파이썬 raise 예외
파이썬 파트12. 예외처리

try hello world 파이썬 입문 강의

try / except

  • 파이썬으로 프로그래밍 중에 다양한 에러가 발생할 수 있다. 이 에러가 발생하는 예외상황은 유연하게 프로그래밍을 할 수 있는 도구가 되기도 한다.

에러 예시

# IndexError >>> list = [] >>> list[0] IndexError: list index out of range # ValueError >>> text = 'abc' >>> number = int(text) ValueError: invalid literal for int() with base 10: 'abc'

try / except문 사용 예시

  • 에러가 발생할 것 같은 코드를 try안에 넣고 except 뒤에 발생할 수 있는 에러의 이름을 적어두면, 에러 발생시 프로그램이 멈추지 않고 별도 처리가 가능하다.
exception 처리

text = '100%' try : number = int(text) # 에러가 발생할 가능성이 있는 코드 except ValueError : # 에러 종류 print('{}는 숫자가 아닙니다.'.format(text)) #에러가 발생 했을 경우 처리할 코드

  • 경우에 따라 예외 처리 대신 if else를 사용 할 수 있다.
    더 간결한 것이나, if문을 사용하는 것이 좋다.

# try-except 문 def safe_pop_print(list, index): try: print(list.pop(index)) except IndexError: print('{} index의 값을 가져올 수 없습니다.'.format(index)) safe_pop_print([1,2,3], 5) # 5 index의 값을 가져올 수 없습니다. # if 문 def safe_pop_print(list, index): if index < len(list): print(list.pop(index)) else: print('{} index의 값을 가져올 수 없습니다.'.format(index)) safe_pop_print([1,2,3], 5) # 5 index의 값을 가져올 수 없습니다.

  • try 문으로만 해결이 가능한 문제도 있다.

try: import your_module except ImportError: print('모듈이 없습니다.')

예외 이름을 모르는 경우 처리 방법

# 모든 에러 처리 try: list = [] print(list[0]) # 에러가 발생할 가능성이 있는 코드 text = 'abc' number = int(text) except: print('에러발생') # 에러 이름 확인 try: list = [] print(list[0]) # 에러가 발생할 가능성이 있는 코드 except Exception as ex: # 에러 종류 print('에러가 발생 했습니다', ex) # ex는 발생한 에러의 이름을 받아오는 변수 # 에러가 발생 했습니다 list index out of range

에러를 직접 일으키는 방법 - raise

  • 사용자가 직접 에러를 발생시키는 기능
  • 많이 사용하면 코드를 읽기 어려워진다.

# 올바른 값을 넣지 않으면 에러를 발생시키고 적당한 문구를 표시한다. def rsp(mine, yours): allowed = ['가위','바위', '보'] if mine not in allowed: raise ValueError if yours not in allowed: raise ValueError try: rsp('가위', '바') except ValueError: print('잘못된 값을 넣었습니다!')

# 190이 넘는 학생을 발견하면 반복을 종료한다. school = {'1반' : [150, 156, 179, 191, 199], '2반' : [150, 195, 179, 191, 199]} try: for class_number, students in school.items(): for student in students: if student > 190: print(class_number, '190을 넘는 학생이 있습니다.') # break # 바로 상위 for문은 종료되지만 최고 상위 for문은 종료되지 않는다. raise StopIteration # 예외가 try 문 안에 있지 않으면 에러 발생시 프로그램이 멈춘다. except StopIteration: print('정상종료')

Toplist

최신 우편물

태그