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

파이썬의 구체적인 예외

<시간/>

파이썬에는 몇 가지 일반적인 예외가 있습니다. 이러한 예외는 일반적으로 다른 프로그램에서 발생합니다. 프로그래머가 명시적으로 이러한 예외를 발생시키거나 파이썬 인터프리터가 이러한 유형의 예외를 묵시적으로 발생시킬 수 있습니다. 이러한 예외 중 일부는 다음과 같습니다.

예외 주장 오류

assert 문이 실패하면 AssertionError가 발생할 수 있습니다. 파이썬에는 몇 가지가 있습니다. 또한 코드에서 일부 assert 문을 설정할 수도 있습니다. assert 문은 항상 참이어야 합니다. 조건이 실패하면 AssertionError가 발생합니다.

예시 코드

class MyClass:
   def __init__(self, x):
      self.x = x
      assert self.x > 50
 myObj = MyClass(5)

출력

---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-21-71785acdf821> in <module>()
      4         assert self.x > 50
      5 
----> 6 myObj = MyClass(5)

<ipython-input-21-71785acdf821> in __init__(self, x)
      2     def __init__(self, x):
      3         self.x = x
----> 4         assert self.x > 50
      5 
      6 myObj = MyClass(5)

AssertionError:

예외 속성 오류

속성 오류는 클래스의 일부 속성에 액세스하려고 하지만 클래스에 존재하지 않을 때 발생할 수 있습니다.

예시 코드

class point:
   def __init__(self, x=0, y=0):
      self.x = x
      self.y = y
        
   def getpoint(self):
      print('x= ' + str(self.x))
      print('y= ' + str(self.y))
      print('z= ' + str(self.z))
pt = point(10, 20)
pt.getpoint()

출력

x= 10
y= 20
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-15-f64eb52b2192> in <module>()
     10 
     11 pt = point(10, 20)
---> 12 pt.getpoint()

<ipython-input-15-f64eb52b2192> in getpoint(self)
      7         print('x= ' + str(self.x))
      8         print('y= ' + str(self.y))
----> 9         print('z= ' + str(self.z))
     10 
     11 pt = point(10, 20)

AttributeError: 'point' object has no attribute 'z'

예외 가져오기 오류

가져오기 시 ImportError가 발생할 수 있습니다. 문에 일부 모듈을 가져오는 데 문제가 있습니다. from 문에 대한 패키지 이름이 정확하지만 지정된 이름으로 발견된 모듈이 없는 경우에도 발생할 수 있습니다.

예시 코드

from math import abcd    def __init__(self, x=0, y=0):

출력

---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-23-ff4519a07c77> in <module>()
----> 1 from math import abcd

ImportError: cannot import name 'abcd'

예외 ModuleNotFoundError

ImportError의 하위 클래스입니다. 모듈이 없으면 이 오류가 발생할 수 있습니다. 없음일 때도 발생할 수 있습니다. sys.modules에서 찾을 수 있습니다.

예시 코드

import abcd

출력

---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-24-7b45aaa048eb> in <module>()
----> 1 import abcd

ModuleNotFoundError: No module named 'abcd'

예외 색인 오류

시퀀스(List, Tuple, Set 등)의 첨자가 범위를 벗어날 때 인덱스 오류가 발생할 수 있습니다.

예시 코드

myList = [10, 20, 30, 40]
print(str(myList[5]))

출력

---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-29-a86bd85b04c9> in <module>()
      1 myList = [10, 20, 30, 40]
----> 2 print(str(myList[5]))

IndexError: list index out of range

예외 재귀 오류

RecursionError는 런타임 오류입니다. 최대 재귀 깊이를 초과하면 증가합니다.

예시 코드

def myFunction():
   myFunction()
myFunction()

출력

---------------------------------------------------------------------------
RecursionError Traceback (most recent call last)
<ipython-input-39-8a59e0fb982f> in <module>()
      2     myFunction()
      3 
----> 4 myFunction()

<ipython-input-39-8a59e0fb982f> in myFunction()
      1 def myFunction():
----> 2     myFunction()
      3 
      4 myFunction()

... last 1 frames repeated, from the frame below ...

<ipython-input-39-8a59e0fb982f> in myFunction()
      1 def myFunction():
----> 2     myFunction()
      3 
      4 myFunction()

RecursionError: maximum recursion depth exceeded

예외 중지 반복

파이썬에서는 next()라는 내장 메소드에 의해 StopIteration 오류가 발생할 수 있습니다. 한 반복자에 더 이상 요소가 없으면 next() 메서드는 StopIteration 오류를 발생시킵니다.

예시 코드

myList = [10, 20, 30, 40]
myIter = iter(myList)
while True:
   print(next(myIter))

출력

10
20
30
40
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-42-e608e2162645> in <module>()
      2 myIter = iter(myList)
      3 while True:
----> 4     print(next(myIter))

StopIteration: 

예외 들여쓰기 오류

파이썬 코드에 잘못된 들여쓰기가 있으면 이런 종류의 오류가 발생합니다. SyntaxError를 상속합니다. 파이썬 클래스.

예시 코드

for i in range(10):
   print("The value of i: " + str(i))

출력

File "<ipython-input-44-d436d50bbdc8>", line 2
    print("The value of i: " + str(i))
        ^
IndentationError: expected an indented block

예외 유형 오류

TypeError는 부적절한 유형의 개체에 대해 작업을 수행할 때 발생할 수 있습니다. 예를 들어 배열 인덱스에 부동 소수점 숫자를 제공하면 TypeError가 반환됩니다.

예시 코드

muList = [10, 20, 30, 40]
print(myList[1.25])

출력

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-46-e0a2a05cd4d4> in <module>()
      1 muList = [10, 20, 30, 40]
----> 2 print(myList[1.25])

TypeError: list indices must be integers or slices, not float

예외 ZeroDivisionError

나눗셈 문제에서 분모가 0인 상황이 발생하면 ZeroDivisionError가 발생합니다.

예시 코드

print(5/0)

출력

---------------------------------------------------------------------------
ZeroDivisionError  Traceback (most recent call last)
<ipython-input-48-fad870a50e27> in <module>()
----> 1 print(5/0)

ZeroDivisionError: division by zero