달력

2

« 2020/2 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1



처리되지 않은 예외(Unhandled Exception)

·       0’으로 나누는 경우

·       원격에 있는 데이터 베이스 접속시 연결되지 않는 경우

·       파일을 열었는데 사용자에 의해서 삭제된 경우

·       네트워크 연결이 끊킨 경우

·       인덱스의 범위를 벗어난 참조가 있는 경우

·       데이터베이스 연결시 DB 서버가 종료되어 있는 경우

 

 

'Development > Python' 카테고리의 다른 글

Parameter Placeholder - MySQL  (0) 2020.02.19
iterator vs generator  (0) 2020.02.19
처리되지 않은 예외(Unhandled Exception)  (0) 2020.02.18
예외(Exception)  (0) 2020.02.18
내장 예외, 주요 내장 예외 클래스  (0) 2020.02.18
구문 에러 (Syntax Error)  (0) 2020.02.18
Posted by codedragon codedragon

댓글을 달아 주세요


 

예외(Exception)       

·       구문 에러(Syntax Error)는 없으나 프로그램 실행을 더 이상 진행 할 수 없는 상태를 의미합니다.

·       처리 하지 않는 예외에 대하여 자동으로 에러(Error)가 발생하고 프로그램을 종료시킵니다.

·       파이썬에는 60여개 이상의 예외가 존재합니다.

 

 

 

 

 


'Development > Python' 카테고리의 다른 글

iterator vs generator  (0) 2020.02.19
처리되지 않은 예외(Unhandled Exception)  (0) 2020.02.18
예외(Exception)  (0) 2020.02.18
내장 예외, 주요 내장 예외 클래스  (0) 2020.02.18
구문 에러 (Syntax Error)  (0) 2020.02.18
같은 부류의 예외 처리하기  (0) 2020.02.18
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

내장 예외

·       프로그램 동작 오류가 있는 시점에서 자동적으로 발생합니다.

·       특정 시점에 개발자가 명시적으로 예외를 발생 시킬 있습니다.

 

 

 

 

 

주요 내장 예외 클래스

클래스 이름

내용

Exception

·       모든 내장 예외의 기본 클래스

·       사용자 정의 예외 작성시 사용

ArithmeticError

·       수치 연산 예외의 기본 클래스

EnvironmentError

·       파이썬 외부 에러의 기본 클래스

FileNotFoundError

·       존재하지 않는 파일을 사용하는 경우

LookupError

·       시퀀스 관련 예외의 기본 클래스

IndexError

·       리스트등 컬렉션 자료형에서 자료의 크기를 벗어나는 인덱스값을 참조하는 경우

KeyError

·       딕트 자료형에서 등록되지 않은 키를 사용하는 경우

NameError

·       정의되지 않은 변수 사용

TypeError

·       타입을 맞지 않게 사용하는 경우

·       문자열과 숫자 더하기하는 경우

ZeroDivisionError

·       0으로 숫자 나누기를 하는 경우

 

 


'Development > Python' 카테고리의 다른 글

처리되지 않은 예외(Unhandled Exception)  (0) 2020.02.18
예외(Exception)  (0) 2020.02.18
내장 예외, 주요 내장 예외 클래스  (0) 2020.02.18
구문 에러 (Syntax Error)  (0) 2020.02.18
같은 부류의 예외 처리하기  (0) 2020.02.18
오류 회피; 에러무시  (0) 2020.02.18
Posted by codedragon codedragon

댓글을 달아 주세요


 

구문 에러 (Syntax Error)

·       문법적 에러 오타, 들여쓰기등의 실수로 발생합니다.

·       실행시 인터프리터(interpreter)에서 에러가 의심되는 부분을 개발자에게 알려줍니다.

·       이클립스(eclipse), Pycharm 등의 통합개발환경 도구(IDE)에서는 자동으로 실행 전에 구문 에러를 체크 해서 알려줍니다.

 

SyntaxError: EOL while scanning string literal

IndentationError: unexpected indent

 

 


'Development > Python' 카테고리의 다른 글

예외(Exception)  (0) 2020.02.18
내장 예외, 주요 내장 예외 클래스  (0) 2020.02.18
구문 에러 (Syntax Error)  (0) 2020.02.18
같은 부류의 예외 처리하기  (0) 2020.02.18
오류 회피; 에러무시  (0) 2020.02.18
raise 구문  (0) 2020.02.18
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

같은 부류의 예외 처리하기

·       상위 예외 클래스 예외 처리시 하위의 모든 예외 클래스도 같은 예외처리 블럭부분에서 처리되어 집니다.

·       예외 클래스들은 상속에 의한 계층 관계를 지니고 있기 때문에 이를 이용하면 여러 예외들을 한꺼번에 처리할 수 있습니다.


 


'Development > Python' 카테고리의 다른 글

내장 예외, 주요 내장 예외 클래스  (0) 2020.02.18
구문 에러 (Syntax Error)  (0) 2020.02.18
같은 부류의 예외 처리하기  (0) 2020.02.18
오류 회피; 에러무시  (0) 2020.02.18
raise 구문  (0) 2020.02.18
사용자 정의 예외  (0) 2020.02.18
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

오류 회피; 에러무시

발생된 Exception을 그냥 무시하기 위해서는 pass 을 사용하면 됩니다.

 

try:

    ...

except :

    pass

...

 

 


'Development > Python' 카테고리의 다른 글

구문 에러 (Syntax Error)  (0) 2020.02.18
같은 부류의 예외 처리하기  (0) 2020.02.18
오류 회피; 에러무시  (0) 2020.02.18
raise 구문  (0) 2020.02.18
사용자 정의 예외  (0) 2020.02.18
assert 구문  (0) 2020.02.18
Posted by codedragon codedragon

댓글을 달아 주세요

2020. 2. 18. 17:43

raise 구문 Development/Python


 

 

raise 구문

·       명시적으로 예외를 발생시키는 구문입니다.

·       예외를 특정 조건에서 raise 키워드를 통해 강제로 발생시킬 있습니다.

·       개발자가 원하는 특정 시점에 에러를 발생시키기 위해서 사용합니다.

 

 

 

 

raise 구문 형식

·       raise 뒤에 아무것도 없는 경우는 현재 Exception을 그대로 던집니다.

·       raise 뒤에 에러타입을 명시하여 특정한 에러를 발생시킬 수 있습니다.

·       raise 뒤에 특정한 에러타입과 에러메시지 (Optional)를 넣어 개발자가 정의한 에러를 발생시킬 있습니다.

 

 

raise

raise [Exception]

raise [Exception(data)]

 

 


'Development > Python' 카테고리의 다른 글

같은 부류의 예외 처리하기  (0) 2020.02.18
오류 회피; 에러무시  (0) 2020.02.18
raise 구문  (0) 2020.02.18
사용자 정의 예외  (0) 2020.02.18
assert 구문  (0) 2020.02.18
반복자 객체  (0) 2020.02.18
Posted by codedragon codedragon

댓글을 달아 주세요


 

사용자 정의 예외

·       내장 예외만으로 부족한 경우, 개발자가 직접 예외를 정의하여 사용 할 있습니다.

·       새로운 예외 클래스 만들어서 사용합니다.

·       사용자 정의 예외 클래스를 구현하는 일반적인 방법은 Exception 클래스를 상속 받아 구현하거나 Exception 클래스의 하위 클래스 하나를 상속 받아서 구현합니다.

 

 

구분

설명

사용자 정의 예외 클래스 정의

·       Exception 클래스를 상속 받아서 예외 클래스를 정의합니다.

 

class 예외타입명(Exception):

예외처리 내용

사용자 정의 예외 발생 방법

·       특정 상황에서 예외 발생시키기

·       내장 예외 발생 방법과 동일하게 raise 키워드를 raise [클래스의 인스턴스] 같이 해당 예외 클래스의 인스턴스를 던져줍니다.

 

raise [클래스의 인스턴스]

사용자 정의 예외를 잡는 방법

·       except [클래스 이름] 과 같이 해당 예외 클래스 이름을 사용하여 해당 예외 객체를 잡아냅니다.

 

except [클래스 이름]

 

 



'Development > Python' 카테고리의 다른 글

오류 회피; 에러무시  (0) 2020.02.18
raise 구문  (0) 2020.02.18
사용자 정의 예외  (0) 2020.02.18
assert 구문  (0) 2020.02.18
반복자 객체  (0) 2020.02.18
추상클래스(abstract class) 형식  (0) 2020.02.17
Posted by codedragon codedragon

댓글을 달아 주세요

2020. 2. 18. 17:39

assert 구문 Development/Python



 

 

assert 구문

·       인자로 받아 수행하는 assert 조건식이 거짓(False) 경우, AssertionError 발생합니다.

·       개발과정에서 디버깅, 제약 사항 설정등에 사용되어 집니다..

 

 

 

 

 

assert 표현 형식

assert  <조건식>, <assert메시지>

 

 

'Development > Python' 카테고리의 다른 글

raise 구문  (0) 2020.02.18
사용자 정의 예외  (0) 2020.02.18
assert 구문  (0) 2020.02.18
반복자 객체  (0) 2020.02.18
추상클래스(abstract class) 형식  (0) 2020.02.17
Python 접근 제한자 (Access Modifier)  (0) 2020.02.17
Posted by codedragon codedragon

댓글을 달아 주세요



 

 

반복자 객체

·       next() 메소드를 가지고 있는 객체입니다.

·       next() 메소드로 더 이상 자료를 념겨줄 수 없을 때 StopIteration 예외가 발생합니다.

 

next(iterator)

iterator.__next__()

 

 

 

 

 

반복자 객체 생성 방법

·       iter(obj) 내장 함수는 객체 obj 반복자 객체 반환합니다.

·       내장 함수 iter() "iter(Iterable객체)" 와 같이 사용하여 해당 Iterable 객체의 iterator를 리턴합니다. Iterable 객체에서 실제 Iteration을 실행하는 것은 iterator로서, iteratornext ()메서드를 사용하여 다음 요소(element) 가져옵니다.

·       만약 더이상 next 요소가 없으면 StopIteration Exception 발생시킵니다.

 

iter(Iterable객체)

 

 

 

 

 

반복자 객체의 효율성

반복자는 원 객체의 원소들을 복사하여 지니고 있지 않습니다


 

 

 

 

 

클래스에 반복자 구현하기

·       어떤 클래스를 Iterable 하게 만들려면, 그 클래스의 iterator 를 리턴하는 __iter__() 메서드를 작성해야 합니다.

·       __iter__() 메서드가 리턴하는 iterator는 동일한 클래스 객체가 될 수도 있고, 별도로 작성된 iterator 클래스의 객체가 될 수도 있습니다. 반환되는 Iterator가 되는 클래스는 __next__() 메서드를 가지고 있어야 합니다.

·       for 반복에서 Iterable Object를 사용하면, 내부적으로 해당 Iterable__iter__() 메서드를 호출하여 iterator를 가져온 후 그 iterator__next__() 메서드를 호출하여 반복문을 수행하게 됩니다.


 

 

클래스안에서 내장 함수 iter(obj)에 대응되는 __iter__(self) 메소드를 구현하고 있으며

객체 obj 인자로 해서 iter(obj)를 호출하면 자동으로 __iter__(self) 함수를 호출합니다. __iter__(self) 함수는 next() 함수를 지닌 반복자 객체를 반환해야 합니다.

class MyCollection:

    def __init__(self):

        self.size = 10

        self.data = list(range(self.size))

 

    def __iter__(self):

        self.index = 0

        return self

 

    def __next__(self):

        if self.index >= self.size:

            raise StopIteration

 

        n = self.data[self.index]

        self.index += 1

        return n

 

 

 


'Development > Python' 카테고리의 다른 글

사용자 정의 예외  (0) 2020.02.18
assert 구문  (0) 2020.02.18
반복자 객체  (0) 2020.02.18
추상클래스(abstract class) 형식  (0) 2020.02.17
Python 접근 제한자 (Access Modifier)  (0) 2020.02.17
파이썬에서 객체의 attribute를 탐색하는 단계  (0) 2020.02.17
Posted by codedragon codedragon

댓글을 달아 주세요