try : 실행할 코드

except : 에러가 발생했을 시 실행되는 부분

else : 에러가 발생하지 않았을 시 실행되는 부분

finally : 에러 여부와 상관없이 마지막에 무조건 실행되는 부분

try:
    a = [1, 2]
    print(a[3]);	# IndexError
    4 / 0		# ZeroDivisionError
except ZeroDivisionError as e:
    print(e)
except IndexError as e:
    print('IndexError')
finally:
    print('finish!!')
    
    
IndexError
finish!!

● return문이 있을경우 예외처리 실행순서

 - finally -> return문

def devide(x, y):
    try:
        result = x / y
    except ZeroDivisionError:
        print('ZeroDivisionError')
        return True
    else:
        print('x / y = ', result)
        return False
    finally:
        print('finally finished!!')
        

>>> devide(2, 0)			# try -> except -> finally -> return출력
ZeroDivisionError
finally finished!!
True

>>> devide(2, 1)			# try -> else -> finally -> return출력
x / y =  2.0
finally finished!!
False

raise : 에러발생 시키는 구문

def check_type(self):
    if type(self) == str:
        pass
    elif type(self) == int:
        raise Exception