python 之 异常,else与with在异常处理中的应用

AssertionError断言语句(assert)失败
AttributeError尝试访问未知的对象属性
EOFError用户输入文件末尾标志EOF(Ctrl+d)
KeyError字典中查找一个不存在的关键字
FloatingPointError浮点计算错误
GeneratorExitgenerator.close()方法被调用的时候
ImportError导入模块失败的时候
IndexError索引超出序列的范围
KeyboardInterrupt用户输入中断键(Ctrl+c)
MemoryError内存溢出(可通过删除对象释放内存)
NameError尝试访问一个不存在的变量
NotImplementedError尚未实现的方法
OSError操作系统产生的异常(例如打开一个不存在的文件)
OverflowError数值运算超出最大限制
ReferenceError弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象
RuntimeError一般的运行时错误
StopIteration迭代器没有更多的值
SyntaxErrorPython的语法错误
IndentationError缩进错误
TabErrorTab和空格混合使用
SystemErrorPython编译器系统错误
SystemExitPython编译器进程被关闭
TypeError不同类型间的无效操作
UnboundLocalError访问一个未初始化的本地变量(NameError的子类)
UnicodeErrorUnicode相关的错误(ValueError的子类)
UnicodeEncodeErrorUnicode编码时的错误(UnicodeError的子类)
UnicodeDecodeErrorUnicode解码时的错误(UnicodeError的子类)
UnicodeTranslateErrorUnicode转换时的错误(UnicodeError的子类)
ValueError传入无效的参数
ZeroDivisionError除数为零
0。处理异常:

try:

    检测范围

except Exception[as reason]:

    #出现异常后的处理代码

    print('出错啦'+str(reason))

1.一个try可以与多个except搭配

2。统一处理多个异常:except(OSError,TypeError)

3.file.close()放到finally模块中

else 语句的丰富应用:

def maxPrime(num):
count = num//2
while count>1:
if num%count == 0:
print('%d不是素数'%num)
break
count -=1
else:
print('%d是一个素数'%num)

while循环中途跳出会执行else,否则不会执行

>>> try:
print(1/2)
except ZeroDivisionError as reason:
print('除数不能为0'+str(reason))
else:

print('没有异常')

没有异常的时候else才会执行

with语句的应用:

对文件操作时对打开的文件进行关闭时,需要捕获异常,因为有可能是在关闭一个不存在的文件,此时使用with语句:

不用with要像下面这样做:

try:

    f=open('dxc.txt','w')

    for eachline in f:

        print(eachline)

except OSError as reason:

    print('出错了~~'+str(reason))

finally:

    if f in locals():

        f.close()

用了with可以这样:

try:

   with open('dxc.txt',‘w’) as f:

    for eachline in f:

        print(eachline)

except OSError as reason:

    print('出错了~~'+str(reason))

同时打开多个文件:

with open(adress1) as f1, open(adress2) as f2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值