try:
4/0
except:
print("0이 나와버려요 ㅜㅜ")
결과값은: '0이 나와버려요ㅜㅜ' 가 나온다!
try:
4/0
except ZeroDivisionError:
print("0이 나옵니다..")
결과값은 '0이 나옵니다..' 가 나온다!
try:
4/0
except ZeroDivisionError as e:
print(e)
결과값은 'division by zero' 가 나온다.
f = open("foo.txt",'w')
try:
#무언가를 수행한다.
finally:
f.close()
foo.txt파일을 쓰기 모드로 연 후에 try문을 수행 한 후 예외 발생 여부와 상관없이
finally절 에서 f.close()로 열린 파일을 닫을 수 있다.
try:
a=[1, 2]
print(a[3])
4/0
except ZeroDivisionError:
print("0으로 나눌수 없음")
except IndexError:
print("인덱싱 할 수 없음")
print(a[3])과 4/0 모두 에러를 발생 시키는 출력이다.
하지만 printa([3])이 더 먼저이기 때문에 결과값은
'인덱싱 할 수 없음' 이 나오게 된다.
이 처럼 먼저 발생한 오류의 출력 하나만을 실행 시킨다.
또한
try:
a=[1, 2]
print(a[3])
4/0
except (ZeroDivisionError, IndexError) as r:
print(r)
이와 같이 오류 메시지를 둘이 묶어도 된다.
결과값은 list index out of range가 나온다.
try:
f = open("foo.txt","w")
except FileNotFoundError:
pass #파일을 못찾아도 그냥 pass해라
class Bird:
def fly(self):
raise NotImplementError
class Eagle(Bird):
pass
a = Eagle()
a.fly()
이렇게 작성하면 에러가 난다.
이 에러를 해결하려면 Eagle에 fly 메서드 함수를 오버라이딩 해야 해결이 된다.