week7_2예외 처리와 파일
목차
1. 오류 종류와 특징
- 구문오류(Syntax Error = 문법 오류, pasing error = 파싱 오류)
ex) 따옴표, 콜론, 괄호를 빼먹는 등, 문법적 실수들 - 예외 오류(exception) : 문법적으로는 맞으나 전혀 예상치 못한 입력 값이나 비상적인 상황으로 발생
ex) 나눗 셈을 하기 위한 input값에 숫자가 아닌 한글 '이백', '사백'을 대입..
2. 오류 대처방법 2가지
- 사전탐지
- 적절하게 다루기,예외 처리(handling)
2.1 try-except 문
문법 형식
try :
{예외 발생 가능성 있는 코드}
except :
{예외 발생시 실행할 코드}
ex)
2.1.1 에러의 종류 아는 법
try :
{코드}
except Exception as e:
print(e)
>> 에러를 e로서 나타냄
2.1.2 에러가 발생했을 때 구체적으로 예외 명시
try :
{코드}
except ZeroDivisionError :
print('0으로 나누는 오류')
except TypeError :
print ('지원되지 않은 연산자를 사용하는 오류')
>> ZeroDivisionError, TypeError 등 각 에러에 맞춰 에러문구 출력, IF 설정하지 않은 에러가 발생한다면?
때문에 오류를 알려주는 except Exception as e : 를 써서 무슨 오류를 알려 주도록 해두자. 아래처럼
2.2. try-except-else 문
try해보고 예외가 없으면 else문 실행 >> 그냥 try-except문이랑 큰 차이가 없는 거 같음..
try-except과 차이라고 한다면 try-except은 오류발생하든말든 프린트까지 일단 실행하고
try-except-else문은 에러가 없으면 else문을 실행하는정도 차이?
즉 에러발생시 print를 실행 하는 것과 안하는 것
ex)
try :
a, b = input(' 두 수를 입력하시오 : ').split()
result = int(a) / int(b)
except ZeroDivisionError :
print('0으로 나누는 오류')
except TypeError :
print ('지원되지 않은 연산자를 사용하는 오류')
except :
print('오류 : 10 2와 같이 두 정수를 입력하세요.')
else :
print('{}/{} ={}'.format(a, b, result))
2.3. try-except-finally 문
finally문은 예외의 발생 여부와 상관없이 항상 실행되는 블록
ex)
try :
result = x / y
except ZeroDivisionError:
ptint('0으로 나누는 오류발생')
else :
print(''결과 :', result)
finally:
print('수행완료')
2.4 raise 문
raise문은 사용자가 원하는 순간(상황)에 필요한 예외를 강제로 발생시킬 수 있는 기능
ex)
'예' or '아니오' 이외 값이 들어오면 에러 중 ValueError를 발생시키고 ValueError의 인수 값이 출력됨
※VlaueError 자리에는 어떤 종류의 에러를 적어도 된다. 내가 발생시키고 싶은 에러를 기재하면되는 것
따라서 출력되는 문구는 다음과 같다
3. 파일 입출력
- 열기 : open()
- 읽기 : read(), readline() >> 한줄 씩 읽기
- 쓰기 : write()
- 닫기 : close()
- 파일연기 간단하게 : with
ex) 열기,읽기, 닫기
열기나 읽기는 저장할 장소가 필요하기에 변수지정이 필요함
※ 만약 h = open('hello.txt','w')로 불러 왔으면 h.write('hello')로 써야함
with 문