파이썬에서 try-else에 else를 써주는 이유는 뭔가요?


어떤 때 try-문에서 else를 써줘야 하나요? 밑의 코드 1, 2, 3은 차이가 없어보이는데

try문에서 에러가 안 생길 때 else문이 실행되는 거라면 그냥 else를 안 쓰거나 try문 밑에 계속 적어주면 되는 거 아닌가요?

소스코드

#1
try:
    A = 3
except:
    pass #handler
else:
    A = 5

#2
try:
    A = 3
    A = 5
except :
    pass #handler

#3
try:
    A = 3
except
    pass #handler
A = 5
  • 2016년 01월 21일에 작성됨

조회수 157


1 답변


좋아요
0
싫어요
채택취소하기

Handling Exceptions에 따르면

try문에 추가로 코드를 적는 것보다는 else 문을 쓰는 것이 더 나은 방법입니다. 다음의 경우로 설명해드리겠습니다.

#코드1 - else문을 쓴 경우
try:
    open("myfile.txt")
except :
    print "IOError!"
else:
    print "all fine!"

    n = int(input())
    print 1/n

#코드2 - try안에 적은 경우
try:
    open("myfile.txt")
    n = int(input())
    print 1/n

except :
    print "IOError!"
else:
    print "all fine!"

프로그래머는 "myfile.txt"가 없을 때만 예외처리를 할 의도로 코드를 작성했습니다 하지만 코드2는 print 1/ntry안에 있기 때문에 zeroDivisionError가 발생할 경우 이 또한 예외처리리 단계로 넘어갑니다. 따라서 코드1 처럼 예외처리를 원하지 않는 코드를 else문 안에 넣어야 우연히 예외처리가 되는 것을 막을 수 있습니다.

  • 2016년 01월 21일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close