异常的发生
在代码执行期间任何错误都有可能发生,每一个异常都会产生错误信息。
NameError。
如下是 command exception:
>>> print kushal Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'kushal' is not defined
最后一行包含了error 信息。
TypeError
typeError也是一个经常被看到的异常。在试图去对不同数据类型的数据操作的时候会发生。
如下:
>>> print 1 + "kushal" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str'
那么如何去处理异常?
try……except 块。
try:
……
except exceptionName:
异常发生的时候的处理。
如果异常在except块没有被处理掉,那么它go out of try 块。
如下例子:
>>> def get_number(): ... "Returns a float number" ... number = float(raw_input("Enter a float number: ")) ... return number ... >>> >>> while True: ... try: ... print get_number() ... except ValueError: ... print "You entered a wrong value" ... Enter a float number: 45.0 45.0 Enter a float number: 24,0 You entered a wrong value Enter a float number: Traceback (most recent call last): File "<stdin>", line 3, in <module> File "<stdin>", line 3, in get_number KeyboardInterrupt
如果没有名字的异常可以捕获任何异常:
>>> try: ... raw_input() # Press Ctrl+c for a KeyboardInterrupt ... except: ... print "Unknown Exception" ... Unknown Exception
使用 finally ,:
>>> try: ... fobj = open("hello.txt", "w") ... res = 12 / 0 ... except ZeroDivisionError: ... print "We have an error in division" ... finally: ... fobj.close() ... print "Closing the file object." ... We have an error in division Closing the file object.