12.异常

1.异常处理

1.1.报错处理

File “/home/pyvip/py_case/11.py”, line 74, in
print(a)#File(文件位置),line74(第几行),(后面所报错的代码)
NameError: name ‘a’ is not defined(有个变量名为’a’的没去定义它)

SyntaxError: Missing parentheses in call to ‘print’. Did you mean print(a)?#SyntaxError(语法错误)

TypeError: unsupported operand type(s) for /: ‘str’ and ‘int’#TypeError类型错误 'str’字符串不能跟’int’整型去除

1.2.try,except

格式:
try:#首先写一个try,然后把所有可能出错的代码放到里面去。
可能出错的代码
可能出错的代码
except:#捕抓异常
pass#跳过

try:#首先写一个try,然后把所有可能出错的代码放到里面去。
    print('aa')
    print(a)
    print('bb')
except:#捕抓异常
    pass#跳过
结果:
aa
(因为捕抓到print(a)这个报错,后面写pass直接跳过不再执行后面的代码)

1.3.try,except NameError as 变量

格式:
try:#首先写一个try,然后把所有可能出错的代码放到里面去。
可能出错的代码
可能出错的代码
except NameError as 变量:#捕抓具体异常然后打印出来
print(变量)

try:#首先写一个try,然后把所有可能出错的代码放到里面去。
    print('aa')
    print(a)
    print('bb')
except NameError as aa:#捕抓具体异常传给aa变量,最后会先把没有出错的先执行,执行到有错误的地方就捕抓出来,终止执行
    print(aa)
结果:
aa
name 'a' is not defined

1.4.捕获多种异常

try:
except NameError
except TypeError
except ImportError
except NameError as 变量
finally:

格式:
try:#首先写一个try,然后把所有可能出错的代码放到里面去。
可能出错的代码
可能出错的代码
except NameError:#捕抓具体异常然后打印出来
print(‘变量未定义’)
except TypeError:
print(‘类型错误’)
except ImportError:
print(‘导入错误’)
except NameError as 变量:
print(‘未知错误类型’)
print(‘变量’)
else:#否则
print(‘上面没有异常’)
finally:#执行到有错误的地方就捕抓出来,继续执行
print(‘有没有错误都继续执行完’)

try:#首先写一个try,然后把所有可能出错的代码放到里面去。
    print('a')
    print('b')
except NameError:#捕抓具体异常然后打印出来
    print('变量未定义')
except TypeError:
    print('类型错误')
except ImportError:
    print('导入错误')
except NameError as c:
    print('未知错误类型')
    print(c)
else:#否则
    print('上面没有异常')
finally:#执行到有错误的地方就捕抓出来,继续执行
    print('有没有错误都继续执行完')
结果:
a
b
上面没有异常
有没有错误都继续执行完

try:#首先写一个try,然后把所有可能出错的代码放到里面去。
    print(a)
    print('b')
except NameError:#捕抓具体异常然后打印出来
    print('变量未定义')
except TypeError:
    print('类型错误')
except ImportError:
    print('导入错误')
except NameError as c:
    print('未知错误类型')
    print(c)
else:#否则
    print('上面没有异常')
finally:#执行到有错误的地方就捕抓出来,继续执行
    print('有没有错误都继续执行完')
结果:
变量未定义
有没有错误都继续执行完

注意:else在没有异常的时候会执行,finally不管是否有异常,都会执行
except用来接受异常,并且可以抛出或者返回异常
try将可能会发生异常的代码放在try中,就可以得到异常,并做相应处理

1.5.自定义异常类型

class ZidingyiError(Exception):
    pass

def func(name):
    if name == '342sdas':
        print('没有错误')
    else:
        raise ZidingyiError('你这个名字有问题')#raise主动去抛出异常

try:
    func('zhu')
except ZidingyiError as ee:
    print(ee)
结果:
你这个名字有问题

1.6.断言语法assert

断言语句是将调试断言插入程序的一种便捷方式
assert 的语法规则是:
表达式返回 True 不报错
表达式返回 False 报错 报 AssertionError

格式:
assert 判断条件:(条件满足就继续执行,条件不满足的话,就报错)

assert 1==1
assert 1==2#报错
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值