Python中的错误处理

Python中的异常处理

 2016.12.06

 

Handling Exceptions即异常处理,下面举一个在Python中异常的举例。

 

while True:
	try:
		x=int(input("Please enter a number:"))
		break
	except ValueError:
		print("Oops! That was no valid number. Try again...")
 在离开try语句之前,始终执行finally子句,无论是否发生异常。 当在try子句中发生异常并且没有被except子句处理(或者它出现在except或else子句中)时,它在执行finally子句之后重新生成。 当通过break,continue或return语句留下try语句的任何其他子句时,finally子句也被“在出口”执行。 一个更复杂的例子:
try:
	raise KeyboardInterrupt
finally:
	print('Goodbye,world!')
 在离开try语句之前,始终执行finally子句,无论是否发生异常。 当在try子句中发生异常并且没有被except子句处理(或者它出现在except或else子句中)时,它在执行finally子句之后重新生成。 当通过break,continue或return语句留下try语句的任何其他子句时,finally子句也被“在出口”执行。 一个更复杂的例子:
def divide(x, y):
     try:
         result = x / y
     except ZeroDivisionError:
         print("division by zero!")
     else:
         print("result is", result)
     finally:
         print("executing finally clause")
 实例化操作(“调用”类对象)创建一个空对象。 许多类喜欢创建具有针对特定初始状态定制的实例的对象。 因此,类可以定义一个名为__init __()的特殊方法,如下所示:
def __init__(self):
    self.data = []

当类定义了__init __()方法时,类实例化会为新创建的类实例自动调用__init __()。 所以在这个例子中,一个新的初始化实例可以通过以下方式获得:

x = MyClass() 

__init __()方法可以具有更大灵活性的参数。 在这种情况下,赋给类实例化运算符的参数被传递给__init __()。 例如,

>>> class Complex:
    def __init__(self, realpart, imagpart):
        self.r = realpart
        self.i = imagpart

>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)                                              

x.counter = 1
while x.counter < 10:
    x.counter = x.counter * 2
print(x.counter)
del x.counter

一般来说,实例变量用于每个实例唯一的数据,类变量用于类的所有实例共享的属性和方法:
class Dog:

    kind = 'canine'         # class variable shared by all instances

    def __init__(self, name):
        self.name = name    # instance variable unique to each instance

>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.kind                  # shared by all dogs
'canine'
>>> e.kind                  # shared by all dogs
'canine'
>>> d.name                  # unique to d
'Fido'
>>> e.name                  # unique to e
'Buddy'

Python中的错误处理