Python은 Python 프로그램이 실행될 때 발생하는 예외와 오류를 처리하기 위해 두 가지 매우 중요한 기능을 제공합니다. 이 기능을 사용하여 Python 프로그램을 디버그할 수 있습니다.
문서를 보려면 F1을 열 수 있습니다. 그림에 표시된 것처럼 많은 예외 유형이 있습니다.
예외란 프로그램 실행 중에 발생하여 프로그램의 정상적인 실행에 영향을 미치는 이벤트입니다.
일반적으로 Python이 프로그램을 정상적으로 처리할 수 없을 때 예외가 발생합니다.
예외는 오류를 나타내는 Python 객체입니다.
Python 스크립트에서 예외가 발생하면 이를 포착하고 처리해야 합니다. 그렇지 않으면 프로그램이 실행을 종료합니다.
예외를 포착하려면 try/exc 문을 사용할 수 있습니다.
try/Exception 문은 try 문 블록에서 오류를 감지하는 데 사용되므로, Except 문이 예외 정보를 캡처하고 처리할 수 있습니다.
예외 발생 시 프로그램을 종료하고 싶지 않다면 한번 시도해 보세요.
구문:
다음은 간단한 try...Exception...else의 구문입니다.
try
:
#运行别的代码
except
:
#如果在try部份引发了'name'异常
except
,:
#如果引发了'name'异常,获得附加的数据
else
:
#如果没有异常发生
try의 작동 원리는 try를 시작한 후 문에서 Python은 예외가 발생할 때 여기로 돌아올 수 있도록 현재 프로그램의 컨텍스트를 표시합니다. try 절이 먼저 실행되고 다음에 일어나는 일은 실행 중에 예외가 발생하는지 여부에 따라 달라집니다.
try 이후 문이 실행될 때 예외가 발생하면 Python은 예외가 처리된 후 전체 try 문을 통과하여 try 및 첫 번째 Except 절을 실행합니다. (예외를 처리할 때 새로운 예외가 발생하지 않는 한)
#try 후 문에서 예외가 발생했지만 일치하는 Except 절이 없으면 해당 예외는 상위 try 또는 프로그램의 최상위 수준에 제출됩니다(이로 인해 프로그램이 종료되고 오류 지방 오류 메시지를 인쇄합니다.
#try 절이 실행될 때 예외가 발생하지 않으면 파이썬은 else 문 다음에 문을 실행하고(else가 있는 경우) 제어 흐름은 전체 try 문을 통과합니다.
다음은 간단한 예입니다. 파일을 열고, 파일에 내용을 쓰고, 예외가 발생하지 않습니다.
#!/usr/bin/python
try
:
fh
=
open
(
"testfile"
,
"w"
)
fh.write(
"This is my test file for exception handling!!"
)
except
IOError:
print
"Error: can't find file or read data"
else
:
print
"Written content in the file successfully"
fh.close()
위 프로그램 출력 결과 :
Written content
in
the
file
successfully
다음은 간단한 예입니다. 파일을 엽니다. 콘텐츠가 기록되었지만 파일에 쓰기 권한이 없어 예외가 발생했습니다:
#!/usr/bin/python
try
:
fh
=
open
(
"testfile"
,
"r"
)
fh.write(
"This is my test file for exception handling!!"
)
except
IOError:
print
"Error: can't find file or read data"
else
:
print
"Written content in the file successfully"
위 프로그램 출력 결과:
Error: can't find
file
or
read data
다음 예와 같이 예외 유형 없이 Except를 사용할 수 있습니다.
try
:
You do your operations here;
......................
except
:
If there
is
any
exception, then execute this block.
......................
else
:
If there
is
no exception then execute this block.
아래 표시된 것처럼 동일한 Except 문을 사용하여 여러 예외 메시지를 처리할 수도 있습니다.
try
:
You do your operations here;
......................
except
(Exception1[, Exception2[,...ExceptionN]]]):
If there
is
any
exception
from
the given exception
list
,
then execute this block.
......................
else
:
If there
is
no exception then execute this block.
try- finally 문은 예외 발생 여부에 관계없이 마지막 코드를 실행합니다.
try
:
finally
:
#退出try时总会执行
raise
참고: Except 문이나 finally 문을 사용하되 동시에 둘 다 사용하지 마십시오. else 문은 finally 문
#!/usr/bin/python
try
:
과 함께 사용할 수 없습니다.
fh
=
open
(
"testfile"
,
"w"
)
fh.write(
"This is my test file for exception handling!!"
)
finally
:
print
"Error: can't find file or read data"
열린 파일에 쓰기 권한이 없으면 출력은 다음과 같습니다.
Error: can't find
file
or
read data
#!/usr/bin/python
🎜>try
:
fh
=
open
(
"testfile"
,
"w"
)
try
:
fh.write(
"This is my test file for exception handling!!"
)
print
"Error: can't find file or read data"
try 블록에서 예외가 발생하면 finally 블록 코드가 즉시 실행됩니다.
finally 블록의 모든 문이 실행된 후 다시 예외가 발생하고 Except 블록 코드가 실행됩니다.
매개변수의 내용이 예외사항과 다릅니다.
예외에는 출력 예외 정보 매개변수로 사용할 수 있는 매개변수가 있을 수 있습니다.
다음과 같이 Except 문을 통해 예외 매개변수를 캡처할 수 있습니다.
try
:
You do your operations here;
......................
except
ExceptionType, Argument:
You can
print
value of Argument here...
변수에서 받는 예외 값은 일반적으로 예외 문에 포함됩니다. 튜플 형태의 변수는 하나 이상의 값을 받을 수 있습니다.
튜플에는 일반적으로 잘못된 문자열, 잘못된 숫자, 잘못된 위치가 포함됩니다.
다음은 단일 예외의 예입니다.
#!/usr/bin/python
# Define a function here.
def
temp_convert(var):
try
:
return
int
(var)
except
ValueError, Argument:
print
"The argument does not contain numbersn"
, Argument
# Call above function here.
temp_convert(
"xyz"
);
실행 결과 위의 프로그램은 다음과 같습니다.
The argument does
not
contain numbers
invalid literal
for
int
() with base
10
:
'xyz'
raise 문을 사용하여 예외를 직접 발생시킬 수 있습니다
raise 구문 형식은 다음과 같습니다.
raise
[Exception [, args [, traceback]]]
문의 예외는 예외 유형(예: NameError)이고 매개 변수는 예외 매개 변수 값입니다. 이 매개변수는 선택사항입니다. 제공되지 않은 경우 예외 매개변수는 "None"입니다.
마지막 인수는 선택 사항이며(실제로는 거의 사용되지 않음) 존재하는 경우 추적 예외 개체입니다.
예외는 문자열, 클래스 또는 개체일 수 있습니다. Python 커널에서 제공되는 대부분의 예외는 클래스 인스턴스의 매개변수인 인스턴스화된 클래스입니다.
예외 정의는 다음과 같이 매우 간단합니다.
def
functionName( level ):
if
level <code>1
:
raise
"Invalid level!"
, level
# The code below to this would not be executed
# if we raise the exception
참고: 예외를 포착하려면 "제외" 문에서 동일한 예외를 사용하여 클래스 개체 또는 문자열을 발생시켜야 합니다.
예를 들어 위의 예외를 catch하는 경우 "제외" 문은 다음과 같습니다.
try
:
Business Logic here...
except
"Invalid level!"
:
Exception handling here...
else
:
Rest of the code here...
새 예외 클래스를 생성하면 프로그램에서 고유한 예외 이름을 지정할 수 있습니다. 예외는 일반적으로 Exception 클래스에서 직접 또는 간접적으로 상속되어야 합니다.
다음은 RuntimeError와 관련된 예제입니다. 예제에는 예외가 발생했을 때 자세한 정보를 출력하는 데 사용되는 기본 클래스인 RuntimeError가 생성됩니다.
try 문 블록에서는 사용자 정의 예외 이후에 Except 블록 문이 실행됩니다. 변수 e는 Networkerror 클래스의 인스턴스를 만드는 데 사용됩니다.
class
Networkerror(RuntimeError):
def
__init__(
self
, arg):
self
.args
=
arg
위 클래스를 정의한 후 다음과 같이 예외를 트리거할 수 있습니다.
try
:
raise
Networkerror(
"Bad hostname"
)
except
Networkerror,e:
print
e.args
위 내용은 Python 예외 처리 방법에 대한 자세한 그래픽 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!