python.异常解读

python 异常

常见系统异常:
系统常见异常继承自Exception,而所有python异常都继承自BaseException类,而BaseException类又继承自Object类。我们也可以自定义异常,自定义的异常要继承自Exception类。

1,常见异常:

a,除零异常一ZeroDivisionError:
#除数不能为零
b,名称异常一NameError:
#调用一个未定义的量
c,类型异常一TypeError:
#不同类型之间违规调用
d,索引异常一IndexError:
#超出索引范围或索引定义不规范
e,键异常一KeyError:
#调用未定义的键或定义不规范
f,值异常一ValueError:
#调用传值不规范,如: int(‘abc’)
g,属性异常一AttributeError:
#调用未定义的属性或定义不规范
h,迭代器异常一StopIteration:
#迭代器调用到最后会发出停止迭代异常

2,异常解决办法:
异常会造成程序崩溃,暂停执行异常后面的代码,通过提前预防和切实干预,可以排除或转移异常,让程序在出现异常的情况下也能执行完整。
1,预防
常用if语句在程序内部排除可能的异常。
例子:
def a(x,y):
if y !=0: #提出条件,排除异常
return x/y
print(‘除数不能为零’)
2,干预
用 try: except: 语法捕捉。

完整用法:
try:
#尝试干预各种异常,把可能出现异常的代码块放进这里。
pass
except Exception as e:
#异常会被except捕捉到,并且每次只捕捉一个,在这里能得到处理。这个Exception是系统常规异常的父类,当不确定会有哪种异常发生时,就用Exception,except会把异常的类型信息赋给后面的e,当有异常时,除了抛出异常信息外还可以执行这里代码。
pass
else:
#这个else必须在except之后,可选的,它的作用是当try没有异常时,会执行这里代码。
pass
finally:
#这个也是可选的,不管try里有没有异常,都执行这里代码块。

3,自定义一个异常类,必须直接或间接继承自baseException类,一般继承Exception就好了。
class Yicang(Exception):
def init(self,msg):
self.msg=msg

4,抛出异常
当你感觉可能出问题时,可以手动抛出异常,raise 函数允许你举手提问,except也能接收到你的问题。
def a(s):
if 10< s or s >100:
raise ValueError(‘值错了’)
else:
print(‘对了’)
a(5) #值小了,产生异常

把自定的异常类抛出去
def a(s):
if 10< s or s >100:
raise Yicang(‘值错了’) #抛出
else:
print(‘对了’)
try:
a(5)
except Yicang as e: #外面接收
print(e)
→值错了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值