Python의 예외 정보(예외)
이 문서의 내용은 Python의 예외에 관한 것입니다. 이제 이를 여러분과 공유합니다. 도움이 필요한 친구들은 이를 참조할 수 있습니다. 예외 메커니즘은 프로그램에서 오류가 발생한 후 프로그램의 처리 방법을 나타냅니다. 오류가 발생하면 프로그램의 실행 흐름이 바뀌고 프로그램의 제어권이 예외 처리로 넘어갑니다. 다음 글은 Python의 예외 관련 정보를 주로 요약한 것입니다. 도움이 필요한 친구들이 참고할 수 있습니다.
ForewordException 클래스는 일반적으로 사용되는 예외 클래스로 StandardError, StopIteration, GeneratorExit, Warning 및 기타 예외 클래스를 포함합니다. Python의 예외는 상속 구조를 사용하여 생성됩니다. 기본 클래스 예외는 예외 처리기에서 캡처될 수 있으며, Python의 try...out 문을 사용하여 다양한 하위 클래스 예외가 캡처될 수 있으며, 예외 절은 다음과 같이 정의됩니다. 절을 시도하십시오.
Python의 예외 처리
try: <statements> #运行try语句块,并试图捕获异常 except <name1>: <statements> #如果name1异常发现,那么执行该语句块。 except (name2, name3): <statements> #如果元组内的任意异常发生,那么捕获它 except <name4> as <variable>: <statements> #如果name4异常发生,那么进入该语句块,并把异常实例命名为variable except: <statements> #发生了以上所有列出的异常之外的异常 else: <statements> #如果没有异常发生,那么执行该语句块 finally: <statement> #无论是否有异常发生,均会执行该语句块。
- else는 선택 사항이며 0 또는 여러 예외가 있지만 그렇지 않은 경우에는 제외가 하나 이상 있어야 합니다.
raise 문은 예외를 수동으로 발생시키는 데 사용됩니다. 여러 가지 호출 형식이 있습니다.
- raise # 인스턴스는 raise 문 이전이나 raise 문에서 생성될 수 있습니다.
- raise #Python은 암시적으로 클래스의 인스턴스를 생성합니다
- 이름(값) 인상 #예외를 발생시킬 때 추가 정보 제공 value
- raise #가장 최근에 생성된 예외를 다시 발생
- E
추가 정보로 ValueError 인상: raise ValueError('양수 값만 허용 가능')
ValueError: raise ValueError('we can only accept positive values')
当使用from的时候,第二个表达式指定了另一个异常类或实例,它会附加到引发异常的__cause__
属性。如果引发的异常没有捕获,Python把异常也作为标准出错消息的一部分打印出来:
比如下面的代码:
try: 1/0 except Exception as E: raise TypeError('bad input') from E
执行的结果如下:
Traceback (most recent call last): File "hh.py", line 2, in <module> 1/0 ZeropisionError: pision by zero The above exception was the direct cause of the following exception: Traceback (most recent call last): File "hh.py", line 4, in <module> raise TypeError('bad input') from E TypeError: bad input
assert语句
assert主要用来做断言,通常用在单元测试中较多,到时候再做介绍。
with...as语句
with语句支持更丰富的基于对象的协议,可以为代码块定义支持进入和离开动作。
with语句对应的环境管理协议要求如下:
环境管理器必须有
__enter__
和__exit__
方法。
__enter__
方法会在初始化的时候运行,如果存在ass子在, __enter__
函数的返回值会赋值给as子句中的变量,否则,直接丢弃。
代码块中嵌套的代码会执行。
如果with代码块引发异常, __exit__(type,value,traceback)
方法就会被调用(带有异常细节)。这些也是由 sys.exc_info返回的相同值.如果此方法返回值为假,则异常会重新引发。否则,异常会终止。正常 情况下异常是应该被重新引发,这样的话才能传递到with语句之外。
如果with代码块没有引发异常, __exit__
方法依然会被调用,其type、value以及traceback参数都会以None传递。
下面为一个简单的自定义的上下文管理类。
class Block: def __enter__(self): print('entering to the block') return self def prt(self, args): print('this is the block we do %s' % args) def __exit__(self,exc_type, exc_value, exc_tb): if exc_type is None: print('exit normally without exception') else: print('found exception: %s, and detailed info is %s' % (exc_type, exc_value)) return False with Block() as b: b.prt('actual work!') raise ValueError('wrong')
如果注销到上面的raise语句,那么会正常退出。
在没有注销掉该raise语句的情况下,运行结果如下:
entering to the block this is the block we do actual work! found exception: <class 'ValueError'>, and detailed info is wrong Traceback (most recent call last): File "hh.py", line 18, in <module> raise ValueError('wrong') ValueError: wrong
异常处理器
如果发生异常,那么通过调用sys.exc_info()
when from을 사용할 때 두 번째 표현식은 예외를 발생시킨 __cause__
특성에 추가되는 또 다른 예외 클래스 또는 인스턴스를 지정합니다. 발생한 예외가 포착되지 않으면 Python은 표준 오류 메시지의 일부로 예외를 인쇄합니다:
예를 들어 다음 코드는
|Exception Name|Description| |BaseException|Root class for all exceptions| | SystemExit|Request termination of Python interpreter| |KeyboardInterrupt|User interrupted execution (usually by pressing Ctrl+C)| |Exception|Root class for regular exceptions| | StopIteration|Iteration has no further values| | GeneratorExit|Exception sent to generator to tell it to quit| | SystemExit|Request termination of Python interpreter| | StandardError|Base class for all standard built-in exceptions| | ArithmeticError|Base class for all numeric calculation errors| | FloatingPointError|Error in floating point calculation| | OverflowError|Calculation exceeded maximum limit for numerical type| | ZeropisionError|pision (or modulus) by zero error (all numeric types)| | AssertionError|Failure of assert statement| | AttributeError|No such object attribute| | EOFError|End-of-file marker reached without input from built-in| | EnvironmentError|Base class for operating system environment errors| | IOError|Failure of input/output operation| | OSError|Operating system error| | WindowsError|MS Windows system call failure| | ImportError|Failure to import module or object| | KeyboardInterrupt|User interrupted execution (usually by pressing Ctrl+C)| | LookupError|Base class for invalid data lookup errors| | IndexError|No such index in sequence| | KeyError|No such key in mapping| | MemoryError|Out-of-memory error (non-fatal to Python interpreter)| | NameError|Undeclared/uninitialized object(non-attribute)| | UnboundLocalError|Access of an uninitialized local variable| | ReferenceError|Weak reference tried to access a garbage collected object| | RuntimeError|Generic default error during execution| | NotImplementedError|Unimplemented method| | SyntaxError|Error in Python syntax| | IndentationError|Improper indentation| | TabErrorg|Improper mixture of TABs and spaces| | SystemError|Generic interpreter system error| | TypeError|Invalid operation for type| | ValueError|Invalid argument given| | UnicodeError|Unicode-related error| | UnicodeDecodeError|Unicode error during decoding| | UnicodeEncodeError|Unicode error during encoding| | UnicodeTranslate Error|Unicode error during translation| | Warning|Root class for all warnings| | DeprecationWarning|Warning about deprecated features| | FutureWarning|Warning about constructs that will change semantically in the future| | OverflowWarning|Old warning for auto-long upgrade| | PendingDeprecation Warning|Warning about features that will be deprecated in the future| | RuntimeWarning|Warning about dubious runtime behavior| | SyntaxWarning|Warning about dubious syntax| | UserWarning|Warning generated by user code|
실행 결과는 다음과 같습니다:
rrreee
__enter__
및 __exit__
메서드가 있어야 합니다. _ __ ENTER __
메소드는 초기화 중에 실행됩니다. ASS 하위가 있는 경우 __ Enter __
의 반환 값은 AS 절에 변수를 할당하고, 그렇지 않으면 삭제합니다. 곧장. 🎜🎜🎜 코드 블록에 중첩된 코드가 실행됩니다. 🎜🎜🎜 with 코드 블록에서 예외가 발생하면 __exit__(type,value,traceback)
메서드가 호출됩니다(예외 세부정보 포함). 이는 sys.exc_info가 반환하는 값과 동일합니다. 이 메서드가 false를 반환하면 예외가 다시 발생합니다. 그렇지 않으면 비정상적으로 종료됩니다. 일반적인 상황에서는 with 문 외부로 전달될 수 있도록 예외를 다시 발생시켜야 합니다. 🎜🎜🎜 with 코드 블록이 예외를 발생시키지 않으면 __exit__
메서드는 계속 호출되며 해당 유형, 값 및 역추적 매개변수는 None으로 전달됩니다. 🎜🎜🎜다음은 간단한 사용자 정의 컨텍스트 관리 클래스입니다. 🎜🎜🎜rrreee🎜🎜🎜위의 raise 문에서 로그아웃하면 정상적으로 종료됩니다. 🎜🎜🎜raise 문을 로그아웃하지 않고 실행한 결과는 다음과 같습니다. 🎜🎜🎜rrreee🎜🎜🎜🎜Exception handler🎜🎜🎜🎜예외가 발생하면 sys.exc_info() 코드를 호출하여 > 함수는 3개의 요소를 포함하는 튜플을 반환할 수 있습니다. 첫 번째 요소는 예외를 발생시킨 클래스이고, 두 번째 요소는 실제로 발생한 인스턴스입니다. 세 번째 요소인 추적 개체는 예외가 원래 발생했을 때의 호출 스택을 나타냅니다. 모든 것이 정상이면 3 None이 반환됩니다. 🎜🎜🎜Python의 내장 모듈에 정의된 예외🎜🎜🎜🎜🎜rrreee🎜🎜🎜관련 권장 사항: 🎜🎜🎜🎜Python 예외 처리 방법에 대한 자세한 그림 및 텍스트 설명🎜🎜🎜🎜<p class="clearfix"><span class="jbTestPos"></span></p>
위 내용은 Python의 예외 정보(예외)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











XML을 PDF로 직접 변환하는 응용 프로그램은 근본적으로 다른 두 형식이므로 찾을 수 없습니다. XML은 데이터를 저장하는 데 사용되는 반면 PDF는 문서를 표시하는 데 사용됩니다. 변환을 완료하려면 Python 및 ReportLab과 같은 프로그래밍 언어 및 라이브러리를 사용하여 XML 데이터를 구문 분석하고 PDF 문서를 생성 할 수 있습니다.

XML 이미지를 먼저 변환하려면 먼저 XML 데이터 구조를 결정한 다음 Python의 Matplotlib와 같은 적절한 그래픽 라이브러리를 선택하고 데이터 구조를 기반으로 시각화 전략을 선택하고 데이터 볼륨 및 이미지 형식을 고려하고 효율적인 라이브러리를 수행하거나 필요에 따라 PNG, JPEG 또는 SVG로 저장하십시오.

XML 구조가 유연하고 다양하기 때문에 모든 XML 파일을 PDF로 변환 할 수있는 앱은 없습니다. XML에서 PDF의 핵심은 데이터 구조를 페이지 레이아웃으로 변환하는 것입니다. XML을 구문 분석하고 PDF를 생성해야합니다. 일반적인 방법으로는 요소 트리와 같은 파이썬 라이브러리를 사용한 XML 및 ReportLab 라이브러리를 사용하여 PDF를 생성하는 XML을 구문 분석합니다. 복잡한 XML의 경우 XSLT 변환 구조를 사용해야 할 수도 있습니다. 성능을 최적화 할 때는 멀티 스레드 또는 멀티 프로세스 사용을 고려하고 적절한 라이브러리를 선택하십시오.

모바일 XML에서 PDF의 속도는 다음 요인에 따라 다릅니다. XML 구조의 복잡성. 모바일 하드웨어 구성 변환 방법 (라이브러리, 알고리즘) 코드 품질 최적화 방법 (효율적인 라이브러리 선택, 알고리즘 최적화, 캐시 데이터 및 다중 스레딩 사용). 전반적으로 절대적인 답변은 없으며 특정 상황에 따라 최적화해야합니다.

대부분의 텍스트 편집기를 사용하여 XML 파일을여십시오. 보다 직관적 인 트리 디스플레이가 필요한 경우 Oxygen XML 편집기 또는 XMLSPy와 같은 XML 편집기를 사용할 수 있습니다. 프로그램에서 XML 데이터를 처리하는 경우 프로그래밍 언어 (예 : Python) 및 XML 라이브러 (예 : XML.etree.elementtree)를 사용하여 구문 분석해야합니다.

XML 미화는 합리적인 압입, 라인 브레이크 및 태그 구성을 포함하여 기본적으로 가독성을 향상시키고 있습니다. 원칙은 XML 트리를 가로 지르고 레벨에 따라 들여 쓰기를 추가하고 텍스트가 포함 된 빈 태그와 태그를 처리하는 것입니다. Python의 xml.etree.elementtree 라이브러리는 위의 미화 프로세스를 구현할 수있는 편리한 Pretty_XML () 기능을 제공합니다.

단일 애플리케이션으로 휴대 전화에서 직접 XML에서 PDF 변환을 완료하는 것은 불가능합니다. 두 단계를 통해 달성 할 수있는 클라우드 서비스를 사용해야합니다. 1. 클라우드에서 XML을 PDF로 변환하십시오. 2. 휴대 전화에서 변환 된 PDF 파일에 액세스하거나 다운로드하십시오.

모바일에는 간단하고 직접 무료 XML에서 PDF 툴이 없습니다. 필요한 데이터 시각화 프로세스에는 복잡한 데이터 이해 및 렌더링이 포함되며 시장에있는 소위 "무료"도구의 대부분은 경험이 좋지 않습니다. 컴퓨터 측 도구를 사용하거나 클라우드 서비스를 사용하거나보다 신뢰할 수있는 전환 효과를 얻기 위해 앱을 개발하는 것이 좋습니다.
