4.11 에러 처리하기 try-except

* 만약 어떤 함수에서 예외가 발생하여 그곳에서 잡히지 않았다면, 호출한 함수에 일치하는 핸들러에 의해서 이 예외를 잡을 떄까지 버블링 한다. 만약 예외 처리에 대한 핸들러를 제공하지 않았다면, 파이썬은 에러 메시지와 오류가 발생한 위치에 대한 정보를 출력하고 프로그램을 종료 한다.*

short_list = [1,2,3]
position = 5
try:
short_list[position]
except:
print('Need a position between 0 and', len(short_list)-1, ' but got', position)

Need a position between 0 and 2 but got 5

위와 같이 인자 없는 except문을 지정 하는 것은 모든 예외 타입을 잡는다는 것을 말한다. ** 에외 타입을 넘어 예외 사항에 대항 세부정보를 얻고 싶다면 변수이름에서 예외 객체 전체를 얻을 수 있다. **
` except 예외 타입 as 이름 `

short_list = [1, 2, 3]
while True:
value = input('Position [q to quit]? ')
if value == 'q':
break
try:
position = int(value)
print(short_list[position])
except IndexError as err:
print('Bad index:', position)
except Exception as other:
print('Something else broke:', other)

Position [q to quit]? 1 2 Position [q to quit]? 0 1 Position [q to quit]? 2 3 Position [q to quit]? 3 Bad index: 3 Position [q to quit]? 2 3 Position [q to quit]? two Something else broke: invalid literal for int() with base 10: ‘two’ Position [q to quit]? q

Comments