Pworkspace

week2 - 예외 처리

haerangssa 2024. 4. 3. 20:15
예외처리
try : 에러 발생 가능성이 있는 코드 실행
에러가 발생하면 그 지점 이후의 코드들은 실행되지 않음
except : 에러 발생 시 (생략 가능, 여러개 사용 가능, 에러 처리하려면 필수)
else : 에러가 발생하지 않았을 경우 실행 (생략 가능, except 있어야 사용 가능)
finally : 에러가 발생해도, 발생하지 않아도 무조건 실행 (생략 가능)

raise : 사용자가 직접 에러를 발생시키는 기능

 


< try-except >

try:
    ...
except [발생오류 [as 오류 메시지 변수]]:
    ...
try 블록 수행 중 오류가 발생하면 except 블록 수행.
하지만 try 블록에서 오류가 발생하지 않는다면 except 블록은 수행되지 않음.

 

💡 except [발생오류 [as 오류 메시지 변수]]:  

 # 여기서 []는 괄호 안의 내용을 생략할 수 있다는 뜻. 

 

📍 생략여부에 따라 방법은 크게 3가지로 구분

# 1. try-except만 쓰는 방법

try:
    ...
except:
    ...
    
@ 종류에 상관없이 오류가 발생하면 except 블록을 수행.
# 2. 발생 오류만 포함한 except 문

try:
    ...
except 발생오류:
    ...

@ except 문에 미리 정해둔 오류와 동일한 오류일 경우에만 except 블록을 수행.
# 3. 발생 오류와 오류 변수까지 포함한 except 문

try:
    ...
except 발생오류 as 오류 메시지 변수:
    ...
    
@ case2 + 오류의 내용까지 알고 싶을 때 사용하는 방법.

 

<예시> case_1 

# try-except 만 쓰는 방법
try:
    # 오류가 발생할 수 있는 코드
    result = 10 / 0
except:
    print("오류가 발생했습니다.")
# 결과: 오류가 발생했습니다.

 

<예시> case_2

# 발생 오류만 포함한 except문
try:
    # 오류가 발생할 수 있는 코드
    result = 10 / 0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
# 결과: 0으로 나눌 수 없습니다.

 

<예시> case_3

# 발생 오류와 오류 변수까지 포함한 except 문
try:
    # 오류가 발생할 수 있는 코드
    result = 10 / 0
except ZeroDivisionError as e:
    print("에러 발생:", e)
# 결과: 에러 발생: division by zero

 

< try-finally >

#finally
try문 수행 중 예외 발생 여부에 상관없이 항상 수행됨. 
보통 사용한 리소스(파일 등)를 close해야 할 때 많이 사용.
# try_finally.py
try:
    f = open('foo.txt', 'w')
    # 무언가를 수행.

    (... 생략 ...)

finally:
    f.close()  # 중간에 오류가 발생하더라도 무조건 실행됨.

 

< try-else >

# try-else 구조
try:
    ...
except [발생오류 [as 오류변수]]:
    ...
else:  # 오류가 없을 경우에만 수행
    ...
try 문 수행 중 오류가 발생하면 except 절, 오류가 발생하지 않으면 else 절이 수행됨.

 

< raise >

# raise
프로그래밍을 하다 보면 종종 오류를 일부러 발생시켜야 할 경우가 생기는데,
파이썬은 raise 명령어를 사용해 오류를 강제로 발생시킬 수 있음.

@ 사용자 정의 예외처리

 

'Pworkspace' 카테고리의 다른 글

week3 - split, map , sep, end  (0) 2024.04.05
week3 - format  (0) 2024.04.05
week2 - zip  (0) 2024.04.03
week2 - List Comprehension  (0) 2024.04.03
week5 - Function2  (0) 2024.04.03