>  기사  >  백엔드 개발  >  Python 연구 노트-오류 처리

Python 연구 노트-오류 처리

黄舟
黄舟원래의
2017-01-17 14:17:591071검색

프로그램 오류를 처리하는 방법에는 여러 가지가 있습니다. 하나는 오류 코드에 동의한 다음 반환된 오류 코드를 사용하여 오류 발생 여부와 오류 원인을 확인하는 것입니다.


그러나 올바른 반환값과 오류 코드를 혼합하기 쉽고, 이를 구별하기 위해 코드를 많이 작성해야 한다는 점이 매우 불편합니다. 게다가 문제가 발생하면 이를 처리할 수 있는 다른 레벨이 있다는 것을 알 때까지 한 번에 한 레벨씩 다음 레벨에 보고해야 합니다.


더 성숙한 접근 방식은 try...Exception...finally... 오류 처리 메커니즘입니다. 이 메커니즘은 일반적인 반환 값을 방해하지 않습니다. 동시에 한 번에 한 레벨씩 수동으로 보고할 필요는 없지만 한 레벨의 캡처 및 처리만 필요합니다.


코드:

try:
print open("Demo.py", 'r')
n = 1 / 0
except ZeroDivisionError, e:
print "zeroDivisionError", e
except ValueError, e:
print "ValueError", e
else:
print "No Error catched"
finally:
print "finally"

오류 처리를 사용할 때 주의해야 할 몇 가지 사항이 있습니다.


예 여러 예외를 잡기 위해 여러 예외를 작성하세요


상위 클래스 예외는 하위 클래스의 예외를 잡을 수 있으며, 잡힌 예외는 다른 예외로 전달되지 않습니다.


else를 사용하면 예외 없이 상황을 처리할 수 있습니다.


마침내 실행 여부와 관계없이 실행됩니다. 오류인지 아닌지.


Build-in Exception의 종류

Python(2.x) 내장 Exception의 상속 관계는 아래 그림과 같습니다.

The class hierarchy for built-in exceptions is:
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StandardError
| +-- BufferError
| +-- ArithmeticError
| | +-- FloatingPointError
| | +-- OverflowError
| | +-- ZeroDivisionError
| +-- AssertionError
| +-- AttributeError
| +-- EnvironmentError
| | +-- IOError
| | +-- OSError
| | +-- WindowsError (Windows)
| | +-- VMSError (VMS)
| +-- EOFError
| +-- ImportError
| +-- LookupError
| | +-- IndexError
| | +-- KeyError
| +-- MemoryError
| +-- NameError
| | +-- UnboundLocalError
| +-- ReferenceError
| +-- RuntimeError
| | +-- NotImplementedError
| +-- SyntaxError
| | +-- IndentationError
| | +-- TabError
| +-- SystemError
| +-- TypeError
| +-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning

물론 클래스를 사용자 정의할 수도 있습니다. 예를 들면 다음과 같습니다.

class MyException(StandardException):

물론 Build-in Exception을 사용하는 것이 좋습니다. Build-in의 Exception에서 필요한 Exception을 찾을 수 없는 경우에만 Exception을 사용자 정의합니다.


사용자 정의 예외를 발생시키려면 다음 구문을 사용하십시오.

raise MyException("this is my Exception")

테스트 코드에서는 예외를 처리할 때 예외를 직접 인쇄할 수 있습니다. 그러나 실제 프로덕션 코드에서 로그를 직접 인쇄하는 것은 적절하지 않을 수 있습니다. 간단한 구성을 통해 로깅.예외(msg)를 사용하여 로그에 오류를 인쇄할 수 있습니다. Python에 내장된 로깅 모듈을 올바르게 사용하는 방법은 다른 기사에서 소개할 수 있습니다.

위는 Python 학습 노트 - 오류 처리 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.