파이썬에서 예외를 처리하는 자습서를 자세히 설명합니다.
이상은 하나의 사건으로 그 중의 한 프로그램이 프로그램의 지령의 정상적인 흐름을 파괴하는 과정에서 발생한다.일반적인 경우, 파이톤 스크립트가 처리할 수 없는 상황이 발생하면 이상을 던집니다.이상은 오류를 나타내는 Python 대상입니다.
Python 스크립트에서 이상을 던지면 이상을 처리해야 합니다. 그렇지 않으면 즉시 종료됩니다.예외 처리:
만약 이상을 일으킬 수 있는 의심스러운 코드가 있다면, 의심스러운 코드를try 블록에 저장할 수 있습니다. 프로그램을 지키는 것입니다.try 블록은 다음과 같은 상황을 포함합니다 except: 문장, 그 다음은 코드, 우아한 처리 문제로 가능한 한 블록입니다.구문
여기는 try...except...else 블록에 대한 간단한 구문:
try:
You do your operations here;
......................
except ExceptionI:
If there is ExceptionI, then execute this block.
except ExceptionII:
If there is ExceptionII, then execute this block.
......................
else:
If there is no exception then execute this block.
여기에는 다음과 같은 몇 가지 문법 요점이 있습니다.
4
4
4
4
예.
다음은 파일을 열고 컨텐트에 기록된 파일을 정상 파일로 이동하는 간단한 예입니다.
#!/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.
try-except 문장은 모든 이상을 포착합니다.이런try-except 성명을 사용하는 것은 좋은 프로그래밍 습관으로 여겨지지 않지만, 모든 이상을 포착하기 때문에 프로그래머가 발생할 수 있는 문제의 근본 원인을 찾아내지 못할 것이다.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 문:
finally: 블록을 try: 블록과 연결할 수 있습니다.try 블록에 이상이 생겼는지, 코드가 없는지finally 블록은 실행해야 하는 블록입니다.try-finally 문장의 문법은 다음과 같습니다.
try:
You do your operations here;
......................
Due to any exception, this may be skipped.
finally:
This would always be executed.
......................
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!!")
finally:
print "Going to close the file"
fh.close()
except IOError:
print "Error: can\'t find file or read data"
이상이 try 블록에 던져지면finally 블록으로 즉시 전달됩니다.finally 블록의 모든 문장을 실행합니다. 이 이상은 다시 던져지고, 처리된 except 문장은try-except 문장에 더 높은 층에 나타납니다.Exception 매개변수:
이상은 하나의 매개 변수가 있고, 매개 변수는 하나의 값이며, 이 문제에 대한 다른 정보를 제공합니다.매개 변수는 이상 내용에 따라 변경됩니다.다음과 같이 다른 자문에서 예외 매개변수를 캡처하는 변수를 제공할 수 있습니다.
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 numbers
", 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]]]
여기서 Exception은 예외 유형(예: NameError)이고 매개변수는 예외에 사용되는 매개변수 값입니다.이 매개 변수는 선택할 수 있습니다.제공되지 않은 경우 예외적인 매개변수는 None입니다.
마지막 매개 변수traceback도 선택할 수 있고 (실천에서 거의 사용되지 않음) 존재하면 이상 소거 대상에 사용됩니다.예:
이상은 문자열, 클래스, 대상일 수 있습니다.대부분의 파이썬 핵심 버퍼링은 클래스이며, 클래스의 실례로 여겨지는 파라미터가 있습니다.다음과 같이 새로운 예외를 정의하는 것이 쉽습니다.
def functionName( level ):
if level < 1:
raise "Invalid level!", level
# The code below to this would not be executed
# if we raise the exception
주: 이상을 포착하기 위해서 "except"문장은 버퍼 클래스나 간단한 문자열과 같은 이상을 인용해야 합니다.예를 들어, 위의 예외가 발견되면 다음과 같이 except 자구를 써야 합니다.
try:
Business Logic here...
except "Invalid level!":
Exception handling here...
else:
Rest of the code here...
사용자 정의 예외:
파이톤에서는 내장된 이상 표준의 파생 클래스를 통해 자신의 이상을 만들 수 있습니다.
다음은 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.