12异常

一、异常处理
1.最简单的try-except语句格式如下:
try:
 #语句块
except:
 #异常处理代码


>>> try:
 print('-----------------')
 a = int(input('请输入一个数:'))
 b = int(input('请在输入一个数:'))
 print(a/b)
except ZeroDivisionError:
 print('第二个数不能为0')
 
-----------------
请输入一个数:232
请在输入一个数:0
第二个数不能为0

2.捕获多个异常;捕获异常的描述信息(应用as)
 try:
  #语句块
 except 异常名称1:
  #异常处理代码
 except 异常名称2:
  #异常处理代码

     异常名称可用元组表示
>>> try:
 a = int(input('请输入一个数:'))
 b = int(input('请在输入一个数:'))
 print(a/b)
except (ZeroDivisionError,ValueError) as result:
 print('捕捉到异常%s'%result)
 
请输入一个数:b
捕捉到异常invalid literal for int() with base 10: 'b'

3.捕获所有的异常(Exception)
>>> try:
 a = int(input('请输入一个数:'))
 b = int(input('请在输入一个数:'))
 print(a/b)
except Exception as result:
 print('输入错误,错误类型:',result)
 
请输入一个数:23
请在输入一个数:0
输入错误,错误类型: division by zero

4.没有捕获到异常
try:
except:
else:

5.中止行为
在程序中,有一种情况是,无论是否捕捉到异常,都要执行一些中止行为,比如关闭文件,这时可用finally语句处理。

try:
 f.open('sssdada','r')
 xxxxx
finally:
 f.close()
 print('关闭文件')

二、抛出异常
1.raise语句
①使用类名引发异常
raise IndexError
②使用异常类的实例引发异常
index = IndexError()
raise index
③传递异常
不带任何参数的raise语句,可以再次引发刚刚发生过的异常,作用就是向外传递异常。

>>> try:
 raise IndexError
except:
 print('出错了')
 raise
出错了
Traceback (most recent call last):
  File "<pyshell#8>", line 2, in <module>
    raise IndexError
IndexError
>>>

④指定异常的描述信息

>>> raise IndexError('索引错误')
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    raise IndexError('索引错误')
IndexError: 索引错误
>>>
⑤异常引发异常
如果要在异常中抛出另外一个异常,可以使用raise-from语句实现。
 
2.断言assert语句
assert语句又称作断言,指的是期望用户满足指定的条件。当用户定义的约束条件不满足的时候,它会触发AssertionError,所以assert语句可以当做条件式的raise语句。
格式:
assert  逻辑表达式,data     #data是可选的
在上述格式中,assert后紧跟一个逻辑表达式,相当于条件。data通常是一个字符串,当表达式的结果为False时,作为异常类型的描述信息使用。逻辑上等同于:
if not 逻辑表达式:
 raise AssertError(data)


>>> a = 0
>>> assert a!=0,'a的值不能为零'
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    assert a!=0,'a的值不能为零'
AssertionError: a的值不能为零
>>>

assert语句用来收集用户定义的约束条件,而不是捕捉内在的程序设计错误。

三、自定义异常
WAITING FOR UPDATING···
四、预定义清理
上下文管理;with语句
语法格式:
with 上下文表达式 [as 资源对象]:
 对象的操作
with open('foo.txt') as file:
 data = file.read()
上述实例使用with语句打开文件。如果能顺利打开文件,则将文件对象赋值给file,然后调用read方法读取了file对象的数据。当对文件操

例:读取文本
with open('123.txt') as f:
    data = f.readlines()
    for each_line in data:
        print(each_line)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值