혼자보기위한python🌗예외처리2️⃣

이풀싹·2023년 5월 15일
0

파이썬_BASIC

목록 보기
7/13
post-thumbnail

1️⃣ 파일 처리 중간에 예외 발생

try:
    file=open('info','w')
    예외.발생해라()
    file.close()
    
except Exception as e:
    print(e)
    
print("#파일이 제대로 닫혔는지 확인하기")
print("file.close:",file.closed)

결과

🌊🌊🌊
except Exception as e: 구문은 예외 처리를 위해 사용되는 구문입니다. 이 구문은 다음과 같은 의미를 가지고 있습니다. try 블록 안에서 예외가 발생하면, 해당 예외를 Exception 클래스의 인스턴스로 생성합니다. as e는 생성된 예외 인스턴스를 변수 e에 할당합니다. except 블록 안의 코드가 실행되며, 예외 처리 로직이 구현됩니다.예외 처리가 완료되면 프로그램의 흐름은 except 블록 다음의 코드로 이동합니다.
따라서, except Exception as e: 구문은 예외가 발생했을 때 해당 예외를 잡고, e라는 변수에 할당하여 추가적인 처리를 수행할 수 있도록 합니다. 이 변수를 활용하여 예외의 정보를 출력하거나 처리하는 등의 작업을 수행할 수 있습니다.


2️⃣ finally 구문 사용해서 파일 닫기

try:
    file=open('infp.txt','w')
    예외.발생해라()
    
except Exception as e:
    print(e)
finally:
    file.close()
    
print("#파일이 제대로 닫혔는지 확인하기")
print("file.close:",file.closed)

결과


3️⃣try 구문 내부에서 return 키워드 사용하는 경우

def test():
    print("test() 함수의 첫 줄입니다.")
    try:
        print("try 구문이 실행되었습니다.")
        return
        print("try 구문의 return 키워드 뒤입니다.")
    except:
        print("except 구문이 실행되었습니다.")
    else:
        print("else 구문이 실행되었습니다.")
    finally:
        print("finally 구문이 실행되었습니다.")
    print("test() 함수의 마지막 줄입니다.")
    
test()    

결과

finally 구문이 실행됩니다. finally 블록은 예외 발생 여부에 상관없이 항상 실행됩니다. 따라서 "finally 구문이 실행되었습니다."라는 문자열을 출력합니다.
"test() 함수의 마지막 줄입니다."라는 문자열은 출력되지 않습니다. 이미 return 문에 의해 함수가 종료되었기 때문입니다. ㄟ( ▔, ▔ )ㄏ


def write_text_file(filename,text):
    try:
        file=open(filename,"w")
        return
        file.write(text)
    except Exception as e:
        print(e)
    finally:
        file.close()
        
write_text_file("test.txt","hi!")

finally 구문에 close() 함수를 호출하도록 코드를 작성하면 코드가 깔끄매집니다. ㄟ( ▔, ▔ )ㄏ


4️⃣반복문과 함께 사용하는 경우

finally 구문은 무조건 실행됩니다. 따라서 반복문에서 break로 빠져나갈 때도 마찬가지입니당.

while True:
    try:
        print("try 구문이 실행되었습니다.")
        break
        print("try 구문의 break 키워드 뒤입니다.")
    except:
        print("excep 구문이 실행되었습니다.")
    finally:
        print("finally 구문이 실행되었습니다.")
    print("while 반복문의 마지막 줄입니다.")
print("프로그램이 종료 되었습니다.")

결과

finally 구문이 실행됩니다. finally 블록은 예외 발생 여부에 상관없이 항상 실행됩니다.
따라서 "finally 구문이 실행되었습니다."라는 문자열을 출력합니다. "while 반복문의 마지막 줄입니다."라는 문자열은 출력되지 않습니다. 이미 break 문에 의해 while 반복문이 종료되었기 때문입니다. "프로그램이 종료되었습니다."라는 문자열이 출력됩니다.


5️⃣ index()함수

number=[52,373,4,62,845,91,20]
print(number.index(52))   #결과 0
print(number.index(4))    #결과 2

index() 함수는 문자열이나 리스트와 같은 시퀀스 타입에서 특정 요소의 인덱스를 반환하는 함수입니다.ㄟ( ▔, ▔ )ㄏ

문자열에서 index() 함수를 사용하면 특정 문자열 또는 문자의 인덱스를 반환합니다. 예를 들어, "Hello, World!".index("o")와 같이 호출하면 문자열 "Hello, World!"에서 첫 번째로 나타나는 문자 'o'의 인덱스인 4를 반환합니다.

리스트에서 index() 함수를 사용하면 특정 요소의 인덱스를 반환합니다. 예를 들어, my_list = [1, 2, 3, 4, 5]라는 리스트가 있다고 가정하면, my_list.index(3)과 같이 호출하면 요소 3의 인덱스인 2를 반환합니다.

index() 함수는 찾고자 하는 요소가 시퀀스에 없을 경우 ValueError 예외를 발생시킵니다. 따라서, index() 함수를 사용할 때는 예외 처리를 고려해야 합니다.

my_string = "Hello, World!"
index = my_string.index("o")
print(index)  # 출력: 4

my_list = [1, 2, 3, 4, 5]
index = my_list.index(3)
print(index)  # 출력: 2

# 예외 처리
try:
    index = my_string.index("z")
    print(index)
except ValueError:
    print("찾는 요소가 시퀀스에 없습니다.")

0개의 댓글