공부/python

[python] 예외처리

JangGiraffe 2016. 6. 27. 19:37

 

 

1. 프로그램이 중단 또는 실행되지 않는 경우

error

문법적인 오류로 인해 프로그램이 실행되지 않는 상황

exception (예외)

프로그램이 문법적인 오류는 없어서 실행은 되지만 특수한 상황이 발생하면 중단되는 것

assertion (단언)

특수한 상황을 만나면 프로그램을 강제로 종료시키는 것

ex) 특정 운영체제 버전 이하일 때 강제 종료, 특정 포트번호 외의 번호가 열려있을 때 종료(해킹으로 판단)

 

 

2. 예외처리

>강사님께서 좋은 개발자가 되기 위해 에러노트(오답노트같은)를 정리하는 것도 좋은 방법이다라네요.

목적

1. 예외가 발생해도 프로그램이 정상 수행하도록 하기 위해서

2. 예외를 기록하기 위해서

 

예외처리 방법

try: ~ except 예외1: ~ except 예외2:~ finally:~ 구문

try: ~ except 예외1: ~ else: 다른 모든 예외에 대한 처리 ~

try: ~ except 예외1: ~ except: 다른 모든 예외에 대한 처리 ~ 등..

try : 예외 발생 가능성이 있는 문장

except: 예외가 발생했을 때 처리내용

finally : 예외 발생 여부와 상관 없이 실행하는 문장 (생략 가능)

 

실습 예제

   

v2 변수에 20을 입력할 경우와 0을 입력할 경우의 결과.

0으로 나눌 수 없기 때문에 ZeroDivisionError가 발생했다.

   

try: ~ except: ~ 구문을 이용해 에러처리를 한 후의 결과이다.

단순히 except:라고 쓴 경우 모든 에러를 처리해준다.

   

물론 예외 형식을 나눠서 구분할 수 도 있습니다.

try: ~ except 예외형식1: ~ except 예외형식2:~ finally : ~의 구문을 이용해 예외처리를 합니다.

    

 

3. 강제로 예외 발생

>어떤 특별한 상황에서 사용할 수 있다. ex) 정기 정검시에 접속이 안되게끔 예외를 발생시키기.

문법

raise Exception("메시지")

 

4. 사용자 정의 예외

> 개발자가 예외 클래스를 만드는 것

> 예외가 발생했을 경우 원하는 메시지를 출력하고자 할 때 ex)로그인시 id 미입력 에러, 비밀번호 오류 등등

> Exception 클래스로부터 상속을 받아 상위 클래스의 생성자에게 원하는 메시지를 넘겨주면 된다.

     

 

 

* assert

프로그램을 강제로 중단하는 것

assert 정상수행조건, "메시지"

정상수행조건이 아니면 메시지를 출력하고 예외가 발생하고 프로그램을 중단합니다.

if문등으로 처리할 수도 있겠다고 생각하지만, if문으로 조건을 처리하는 과정에서도 해킹같은 것을 당할 수 있기 때문에 이런 보안이 민감한 상황 같은 경우에는 assert를 사용한다.

   

반응형