Python 知识扩展(二)

出错处理

try-except-else-finally 结构

语句块执行顺序如下图所示, 这四种语句块可以一起使用,也可以使用 try 和其他语句组合,可行的组合有 try-excepttry-finallytry-except-finallytry-except-elsetry-except-else-finally

出错
正常
开始执行
try
except
else
finally
后续操作
import json

UNDEFINED = object()

def divide_json(path):
    handle = open(path, 'r+', encoding='utf-8') # 可能发生 IOError
    try:
        data = handle.read()  # 可能发生 UnicodeDecodeError 
        op = json.loads(data)  # 可能发生 ValueError
        value = (op['numerator'] / op['denominator']) # 可能发生 ZeroDivisionError
    except ZeroDivisionError as e:
        return UNDEFINED
    else:
        op['result'] = value
        result = json.dumps(op)
        handle.seek(0)
        handle.write(result)  # 可能发生 IOError
        return value
    finally:
        handle.close()

if __name__ == '__main__':
    path = './my_file.txt'
    divide_json(path)

上述程序很好的演示了 Python 异常处理,__main__ 调用 divide_json, 该函数中只捕获了 ZeroDivisionError 异常,发生该异常时,进入 except 块内,返回一个未定义对象,然后进入 finally关闭文件。对于程序中其他可能出现的异常,均抛出到上层,由调用者处理,这里调用者 __main__ 未对其他异常做处理,则按照默认方式进行处理。

ASCII 字符转换

ord(char) # 字符转ascii码
chr(ascii_code) # ascii 转字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值