파이썬에서 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

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문 안에 넣어야 우연히 예외처리가 되는 것을 막을 수 있습니다.

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.