일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- hadoop safe mode
- is not allowed to impersonate hive (state=08S01
- hive beeline 에러
- 자소서 빨리
- hive beeline
- 도커 교과서
- 자소서 너무 오래 걸림
- Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000
- hive beeline 설정
- 자소서 시간 줄이기
- code=0)
- mac hadoop 설치
- hadoop safe mode leave
- mac hive 3
- 카카오 2020 코딩테스트
- 이더리움 #ethereum
- mac hadoop
- 기업 조사 빨리 하는 법
- 카카오 자물쇠와 열쇠
- mac hadoop 3
- Safe mode is ON
- 카카오 2020 코테
- mac hadoop 설정
- Resources are low on NN
- 자소서 빨리 쓰는 법
- mac hive
- Failed to connect to localhost:10000
- hive beeline 실행
- 백준 18428
- 이더리움
Archives
- Today
- Total
A seeker after truth
예외 처리 본문
*본문은 <파이썬 정복>(김상형 저, 한빛미디어, 2018)을 공부하며 작성된 내용입니다.
1. raise
raise 명령은 고의적으로 예외를 발생시킨다. 작업을 위한 선행 조건이 맞지 않거나, 더이상 진행할 수 없는 치명적인 문제가 발생했을 때 호출원으로 예외를 던져 잘못되었음을 알린다.
def calcsum(n):
if n<0:
raise ValueError
sum = 0
for i in range(n+1):
sum += i
return sum
try:
print("~-5 =", calcsum(-5))
except ValueError:
print("Wrong Input")
2. finally
finally 블록은 예외 발생 여부와 상관 없이 반드시 실행해야 할 명령을 지정한다. 메모리나 자원을 할당한 후 해제해야 하는데 이런 구문을 finally 블록에 작성하면 좋다.
try:
print("네트워크 접속")
a = 2/0
print("네트워크 통신 수행")
finally:
print("접속 해제")
print("작업 완료")
위 코드와 같은 경우, try의 2번째 문장을 실행하는 과정에서 ZeroDivisionError가 발생한다. 따라서 finally 블록 안의 명령문을 실행하게 된다. 네트워크에 접속한 후 통신을 수행하고 다 완료하면 접속을 끊는 것이 정상적인 순서이다. 통신 수행 중에 예외가 발생해서 해제하지 못하면 네트워크는 계속 연결된 상태로 남아있게 된다. 이럴 때 해제 구문을 finally 블록에 작성해 두면 연결이 끊어짐을 보장할 수 있다.
finally는 예외 발생 여부와 상관 없이 언제나 실행되는 블록이므로, try 블록이 정상 실행되어도 실행이 된다. 심지어 try 내부에서 return 문으로 함수를 종료하더라도 finally 블록을 실행한 후 리턴하게 되어 있어 정리 코드는 틀림없이 실행된다.
네트워크 뿐만 아니라 외부의 자원을 사용하는 모든 코드는 해제에 신경 써야 한다. 파일 입출력은 finally 대신 with 구문을 더 잘 쓴다.
'Programming Language > Python' 카테고리의 다른 글
<암호화폐 자동 거래 시스템 만들기> ~거래소 모듈 구현까지 (0) | 2019.12.11 |
---|---|
map, lambda 예제 (0) | 2019.12.09 |
python interning (0) | 2019.11.15 |
데이터 기록(파일, DB, 피클링) 및 팁 (0) | 2019.10.23 |
객체 지향/클래스 파트 (0) | 2019.10.17 |