Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 예외란 무엇입니까?

<시간/>

예외는 프로그램 명령의 정상적인 흐름을 방해하는 프로그램 실행 중에 발생하는 이벤트입니다. 일반적으로 Python 스크립트는 대처할 수 없는 상황에 직면하면 예외가 발생합니다. 예외는 오류를 나타내는 Python 개체입니다.

Python 스크립트에서 예외가 발생하면 즉시 예외를 처리해야 합니다. 그렇지 않으면 종료되고 종료됩니다.

예외 처리

예외를 일으킬 수 있는 의심스러운 코드가 있는 경우 시도에 의심스러운 코드를 배치하여 프로그램을 방어할 수 있습니다. :차단하다. 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.

다음은 위에서 언급한 구문에 대한 몇 가지 중요한 사항입니다 -

  • 하나의 try 문은 여러 개의 except 문을 가질 수 있습니다. 이는 try 블록에 다양한 유형의 예외를 throw할 수 있는 문이 포함된 경우에 유용합니다.
  • 모든 예외를 처리하는 일반 예외 절을 제공할 수도 있습니다.
  • except 절 뒤에 else 절을 ​​포함할 수 있습니다. else 블록의 코드는 try:블록의 코드에서 예외가 발생하지 않으면 실행됩니다.
  • else-block은 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

예외가 없는 예외 조항

다음과 같이 정의된 예외 없이 예외 문을 사용할 수도 있습니다. -

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:
   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.

마침내 절

마침내를 사용할 수 있습니다. :시도와 함께 차단 :차단하다. finally 블록은 try 블록에서 예외가 발생했는지 여부에 관계없이 실행해야 하는 모든 코드를 넣는 곳입니다. try-finally 문의 구문은 다음과 같습니다. -

try:
   You do your operations here;
   ......................
   Due to any exception, this may be skipped.
finally:
   This would always be executed.
   ......................

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 블록의 모든 명령문이 실행된 후 예외가 다시 발생하고 try-except 문의 다음 상위 계층에 있는 경우 예외 명령문에서 처리됩니다.