python使用异常对象来表示异常情况。遇到异常后,会引发异常,如果异常对象未被处理或捕获,程序就会用回溯并终止执行。如果知道某段代码可能导致某种异常,如除零,又不希望终止,那么就根据需要添加try/except 或者try/finally进行处理。
虽然使用条件语句也能实现与异常处理同样的功能,但是条件语句可能在自然性和可读性上差些,所以尽量使用异常处理机制。(在做一件事时去处理可能出现的错误,而不是在开始做事前就进行大量的检查)
每个异常都是一些类的实例,常见的异常类有:
Exception 所有异常类的基类
AttributeError 特性引用或赋值失效导致
IOError 试图打开不存在的文件
IndexError 序列中索引越界
KeyError 使用映射中不存在的键
NameError 找不到名字或者变量
SyntaxError 语法错误
TypeError 类型错误
ValueError 值错误
ZeroDivisionError 除0错误
自定义异常类
class CustomException(Exception):pass
抛出异常
raise Exception(“some thing error.”)
捕获异常
使用try/except 语句
try:
x = input("Enter the first number : ")
y = input("Enter the second number : ")
print x / y
except ZeroDivisionError:
print “The Second number can't be zero!”
捕获多个异常
try:
code
except ZeroDivisionError:
print “The Second number can't be zero!”
except TypeError:
print “That wasn't a number.”
另一种形式
except (ZeroDivisionError, TypeError, NameError):
print “some thing wrong.”
捕捉所有异常
except:
print “some thing wrong.”
或者
except Exception, e:
print e
它可以让程序继续运行,并且能打印错误。
else语句,当没有异常发生时做某些动作
try:
code
except:
pass
else:
pass
finally语句,用来在可能的异常后进行清理
try:
code
finally:
pass
不管try中是否发生异常,finally语句总会执行