#简单一场案例3
try:
num=int(input('please input your number'))
rst=100/num
print('计算结果为{0}'.format(rst))
except ZeroDivisionError as e:
print('counter problem')
print(e)
except NameError as e:
print('名字起错了')
print(e)
exit()
except AttributeError as e:
print('好像属性有问题')
print(e)
exit()
#所有异常都是继承自Exception
#此语句任何的异常都会被拦截
#并且这句话一定要是最后一个
except Exception as e:
print('具体错误不知道')
-注:如果知道的具体的错误需要写在前面
在异常继承关系中,越是子类的异常,越要往前放,父类的异常需要往后放
-用户手动引发的异常
某些情况下用户希望自己引发一个异常的时候使用
raise 关键字来引发异常
#raise案例
try
print('我爱哈尔滨')
print('前方到站哈尔滨')
#手动异常语法
raise ValueError
print('贼冷')
except NameError as e:
print('NameError')
except ValueError as e:
print('ValueError')
except Exception as e:
print('具体错误不知道')
finally:
print('over')
>>我爱哈尔滨
>>前方到站哈尔滨
>>valueError
>>over
#raise案例-2
#此处还可以自己定义异常
#但是自己定义的异常必须是系统异常的子类
class PandaError(ValueError):
pass
try
print('我爱哈尔滨')
print('前方到站哈尔滨')
#手动异常语法
raise PandaError
print('贼冷')
except NameError as e:
print('NameError')
except PandaError as e:
print('PandaError')
except ValueError as e:
print('ValueError')
except Exception as e:
print('具体错误不知道')
finally:
print('over')
>>我爱哈尔滨
>>前方到站哈尔滨
>>PandaError
>>over
-else语句案例
try:
num=int(input('please input your number'))
rst=100/num
print('计算结果为{0}'.format(rst))
except Exception as e:
print('出错')
else:
print('无措')
finally:
print('over')
>>please input your number50
>>计算结果为2
>>无措
-关于自定义异常问题(了解)
如果是自定义异常则推荐自定义异常
在自定义异常的时候一般要有一下内容
自定义异常发生异常的异常代码
发生异常后的提升
自定义发生异常的行数