혼공파 75 ~ 77강
1. 예외 처리의 else finally 구문
try:
# 예외가 발생할 가능성이 있는 코드
pass
except:
# 예외가 발생했을 때 실행할 코드
pass
else:
# 예외가 발생하지 않았을 때 실행할 코드
pass
finally:
# 무조건 실행하는 코드
pass
# 위의 순서대로 코드를 짜고, 보통 try-except / try-except-finally 조합으로 사용한다.
try:
# 예외가 발생할 가능성이 있는 코드
숫자입력 = int(input("정수 입력>"))
except:
# 예외가 발생했을 때 실행할 코드
print("정수를 입력하지 않았습니다.")
else:
# 예외가 발생하지 않았을 때 실행할 코드
print("원의 반지름: ", 숫자입력)
print("원의 둘레: ", 2 * 3.14 * 숫자입력)
print("원의 넓이: ", 3.14 * (숫자입력**2))
# else구문을 사용하지 않고 try 구문에 실행할 코드를 넣어도 무방
# 파이썬에만 있는 문법임
try:
# 예외가 발생할 가능성이 있는 코드
숫자입력 = int(input("정수 입력>"))
# 예외가 발생하지 않았을 때 실행할 코드
print("원의 반지름: ", 숫자입력)
print("원의 둘레: ", 2 * 3.14 * 숫자입력)
print("원의 넓이: ", 3.14 * (숫자입력**2))
except:
# 예외가 발생했을 때 실행할 코드
print("정수를 입력하지 않았습니다.")
finally:
# 무조건 실행하는 코드 (예외가 발생하거나, 안하거나)
print("무조건 실행되는 코드입니다.")
def 함수():
print("함수()에 진입했습니다.")
try:
print("try 구문에 진입했습니다.")
return
print("try 구문이 끝났습니다.")
except:
print("except 구문에 진입했습니다.")
finally:
print("finally 구문에 진입했습니다.")
print("함수()가 끝났습니다.")
# return 키워드로 함수가 종료되도 finally 구문안에 코드는 실행이 된다.
finally 구문 활용 예
# 사용자로부터 파일 이름을 입력 받고
# 그 파일의 내용을 int() 함수로 정수로 변환 뒤 출력하는 프로그램
def 함수(파일이름):
try:
파일 = open(파일이름, "r")
내용 = 파일.read()
숫자 = int(내용)
return 내용
except FileExistsError:
print("존재라지 않는 파일입니다.")
except ValueError:
print("숫자로 변환할 수 없는 파일입니다.")
finally:
파일.close()
파일이름 = input("파일 이름> ")
print(함수(파일이름))
# 함수 안에서 예외처리에 상관 없이 finally 키워드를 이용해 파일을 닫아줄 수 있다.
2. 예외 객체와 예외 구분
# 예외 객체: 예외와 관련된 정보를 담고 있는 객체
# try:
# dasdasasf[0]
# except 예외의_종류 as 예외_객체의_변수_이름:
# NameError
# IndexError
# ValueError
# -> Exception (모든 예외 포함)
try:
dasdasasf[0]
except Exception as e:
print(type(e)) # <class 'NameError'>
print(e) # name 'dasdasasf' is not defined
try:
[사용자로부터 어떤 입력을 받고, 네트워크로 그걸 전송하는 프로그램]
except ValueError:
print("값을 다시 제대로 입력해주세요.")
except ConnectionError:
print("인터넷 연결에 문제가 있습니다.")
except Exception as e:
i = input("오류 내용을 전송하시겠습니까? [Y/N]")
if i in ["Y", "y"]:
메일보내기(type(e), str(e))
3. 예외 강제 발생 raise Exception()
raise Exception("예외를 강제로 발생시킵니다.")
# 코드 미구현 상태를 명시적으로 표현함에 사용
number = input("정수 입력> ")
number = int(number)
if number > 0:
print("양수 입니다")
elif number == 0:
raise Exception("아직 구현되지 않았습니다.")
else:
raise NotImplementedError("아직 구현되지 않았습니다.")
# 미구현 코드는 예외 객체로 들어가 있음
# 이렇게 하면 안된다 전달하기
def 사각형넓이구하기(너비, 높이):
if 너비 <= 0 or 높이 <= 0:
raise ValueError("너비와 높이는 양수여야합니다.")
return 너비 * 높이
print(사각형넓이구하기(0, -1))
github에서 작성된 코드 검색해서 살펴보는 것으로 감각 익히기
'Base > Python' 카테고리의 다른 글
24. 클래스 문법 기본 (0) | 2023.04.20 |
---|---|
23. 객체지향 프로그래밍 (0) | 2023.04.20 |
21. 구문 오류와 예외 / 기본적인 예외처리 방법 / 예외처리 구문 (0) | 2023.03.24 |
20. 파이썬 설치 및 환경설정 (0) | 2023.03.23 |
19. 하노이의 탑 (재귀함수) (0) | 2023.03.10 |
댓글