exceptions
- 의도하지 않은 에러가 일어나는 경우와 같은 예외 상황을 exception이 일어났다고 한다.
- 유저의 input을 기반으로 어떠한 연산을 하게 될 때 유저가 어떠한 형태의 데이터를 input으로 입력할지 항상 알 수없기 때문에 exception이 발생될 가능성이 높다.
- exception이 발생하면 발생한 코드 위치에서 다음 코드들이 실행되지 않고 곧바로 프로그램이 종료를 하게된다.
- exception이 발생해도 해당 프로세스가 종료하지 않고 대신에 다른 로직을 실행하게 한 후 프로그램을 계속 실행하게 하는 것을 exception handling이라고 한다.
- exception handling은 try except 구문을 사용해서 실행한다.
try:
문장1
문장2
except Exception:
exception이 일어났을 경우 실행할 예외 처리코드
finally:
exception 여부와 상관 없이 항상 마지막에 실행되는 코드
- exception을 catch할 때 as 문을 써서 해당 exception의 객체를 방아서 정보를 더 얻을 수 있다
def return_elem_or_minus_one(index):
short_list = [1, 2, 3]
elem = 0
try:
elem = short_list[index]
print("이 문장은 exception이 발생하지 않으면 실행됩니다")
except IndexError:
print(f"이 문장은 Exception이 발생하면 실행 됩니다")
elem = -1
except Exception as e:
print(f"IndexError가 아닌 다른 종류의 Exception이 발생했습니다 ==> {e}")
elem = -1
finally:
print("이 문장은 exception 발생 여부와 상관없이 무조건 실행됩니다!")
return elem
- try문에서도 else를 사용할 수 있다. else문은 exception이 발생하지 않았을 때 실행한다.
def return_elem_or_minus_one(index):
short_list = [1, 2, 3]
elem = 0
try:
elem = short_list[index]
print("이 문장은 exception이 발생하지 않으면 실행됩니다")
except IndexError:
print(f"이 문장은 Exception이 발생하면 실행 됩니다")
elem = -1
except Exception as e:
print(f"IndexError가 아닌 다른 종류의 Exception이 발생했습니다 ==> {e}")
elem = -1
else:
print(f"Exception이 발생하지 않았습니다!")
finally:
print("이 문장은 exception 발생 여부와 상관없이 무조건 실행됩니다!")
return elem