内置异常类
Exception
类名 | 描述 |
---|---|
Exception | 几乎所有的异常类都是从它派生而来 |
AttributeError | 引用属性或给它赋值失败引发的 |
OSError | 操作系统不能执行指定的任务时引发,有多个子类 |
IndexError | 使用序列中不存在的索引时引发,为LookupError的子类 |
KeyError | 使用映射中不存在的键值时引发,为LookupError的子类 |
NameError | 找不到名称(变量)时引发 |
SyntaxError | 代码不正确时引发 |
TypeError | 将内置操作或函数用于类型不正确的对象时引发 |
ValueError | 将内置操作或函数用于这样的对象时引发,类型正确但包含的值不合适 |
ZeroDividionError | 在除法或求模运算的第二个参数为零时引发 |
捕获异常
try:
x=int(input('Enter the first number'))
y=int(input("Enter the first number"))
except ZeroDividionError:
print ("The second number can't be zero")
except TypeError:
print ("That wasn't a number,was it?")
万事大吉捕获异常
我们在捕获异常时经常无法完全考虑到我们有可能遇到的异常,可以通过如下方式获取有用异常
while True:
try:
x=int(input("Enter the first number"))
y=int(input("Enter the second number"))
value=x/y
print ('x/y is',value)
except Exception as e:
print ('Invalid input:',e)
print ('please try again')
else:
break
finally确保代码块无论是否引发异常都执行
try:
1/0
except NameError:
print("Unknown variable")
else:
print("That went well!")
finally:
print("Cleaning up")