步遥情感网
您的当前位置:首页关于python中异常的详细说明

关于python中异常的详细说明

来源:步遥情感网


每个异常都是一 些类的实例,这些实例可以被引发,并且可以用很多种方法进行捕捉,使得程序可以捉住错误并且对其进行处理


>>> 1/0

Traceback (most recent call last):
 File "<pyshell#0>", line 1, in <module>
 1/0
ZeropisionError: integer pision or modulo by zero

异常处理

捕捉异常可以使用try/except语句。

>>> def inputnum():
 x=input('Enter the first number: ')
 y=input('Enter the first number: ')
 try:
 print x/y
 except ZeroDivisionError:
 print "The second number can't be zero"

 
>>> inputnum()
Enter the first number: 10
Enter the first number: 0
The second number can't be zero

raise 触发异常

>>> class Muff:
 muffled=False
 def calc(self,expr):
 try:
 return eval(expr)
 except ZeroDivisionError:
 if self.muffled:
 print 'Division by zero is illegal'
 else:
 raise

 
>>> c=Muff()
>>> c.calc(10/2)

Traceback (most recent call last):
 File "<pyshell#33>", line 1, in <module>
 c.calc(10/2)
 File "<pyshell#31>", line 5, in calc
 return eval(expr)
TypeError: eval() arg 1 must be a string or code object
>>> c.calc('10/2')
>>> c.calc('1/0')

Traceback (most recent call last):
 File "<pyshell#35>", line 1, in <module>
 c.calc('1/0')
 File "<pyshell#31>", line 5, in calc
 return eval(expr)
 File "<string>", line 1, in <module>
ZeroDivisionError: integer pision or modulo by zero
>>> c.muffled=True
>>> c.calc('1/0')
Division by zero is illegal

多种异常类型

try:
 x=input('Enter the first number:')
 y=input('Enter the seconed number:')
 print x/y
except ZeroDivisionError:
 print "The second number can't be zero!"
except TypeError:
 print "That wasn't a number,was it?"

同时 捕捉多个异常

try:
 x=input('Enter the first number:')
 y=input('Enter the seconed number:')
 print x/y
except(ZeroDivisionError,TypeError,NameError):
 print 'Your numbers were bogus...'

捕捉对象

try:
 x=input('Enter the first number:')
 y=input('Enter the seconed number:')
 print x/y
except(ZeroDivisionError,TypeError),e:
 print e

 
Enter the first number:1
Enter the seconed number:0
integer pision or modulo by zero

捕捉所有异常

try:
 x=input('Enter the first number:')
 y=input('Enter the seconed number:')
 print x/y
except:
 print 'something wrong happened...'

 
Enter the first number:
something wrong happened...
显示全文