暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python异常之try/else分句

原创 梯阅线条 2023-12-28
393

1 python异常之try/else分句

如果try语句代码块未发生异常,则执行else语句代码块,else需要放在except分句后面。

1.1 基本用法

用法

try: # try语句代码块 # 执行时可能发生异常的代码块 except ExceptionType: # except语句代码块 # 当发生指定类型的异常时执行的代码块 else: # else语句代码块 # 如果没有发生异常,则执行此代码块 finally: # finally语句代码块 # 不管是否发生异常都会执行此代码块

描述

(1) else分句必须出现在except后面,finally的前面;

(2) ExceptionType为可选项,若有则捕获指定异常,若无则捕获全部异常;

(3) 将可能发生异常的语句放在try代码块,并且分别用except指定各自可能发生的异常;

(4) 将“不会发生异常”的语句放在else代码块,避免意外发生异常被except捕获;这的“不会发生异常”是一种预期结果,是一种理想假设;

(5) else分句提高代码的健壮性和可读性;

示例

>>> while True: try: x=input("请输入一个整数:") print('您输入的是:',x) num = int(x) except ValueError: print("输入错误,请输入一个整数!") print('-'*20) else: print("输入正确!") break 请输入一个整数:梯阅线条 您输入的是: 梯阅线条 输入错误,请输入一个整数! -------------------- 请输入一个整数:9555 您输入的是: 9555 输入正确!

1.2 else使用举例

如果希望在没有发生异常情况下执行一些代码,则可以使用else语句实现。

1.2.1 处理除数非0

描述

除法运算可能出现除以零的情况,在else分句编写非0代码。

示例

>>> def testesle(): try: x=int(input('输入被除数:')) y=int(input('输入除数:')) res=x/y except ZeroDivisionError as zde: print('除数不能为0:',zde) else: print('商等于:',res) >>> testesle() 输入被除数:10 输入除数:2 商等于: 5.0 >>> testesle() 输入被除数:10 输入除数:0 除数不能为0: division by zero

1.2.2 处理文件内容

描述

处理文件时可能发生文件不存在打开失败的情况,在else语句编写打开成功的代码。

示例

>>> def testelse(filepath): try: with open(filepath, 'r') as f: content = f.read() except FileNotFoundError as fnfe: print('打开文件失败:',fnfe) else: print(content) >>> testelse(r'E:\documents\F盘\hello.txt') hello!python! >>> testelse(r'E:\documents\F盘\hella.txt') 打开文件失败: [Errno 2] No such file or directory: 'E:\\documents\\F盘\\hella.txt'

1.2.3 处理网络请求

描述

处理网络请求时,可能出现连接超时或服务器错误的异常,在else语句编写请求成功的代码。

示例

>>> def testelse(url): import requests try: res=requests.get(url) res.raise_for_status() except requests.exceptions.RequestException as e: print('打开url失败:',e) else: print(res.status_code) >>> testelse(r'https://www.baidu.com/') 200 >>> testelse(r'https://www.9555.com/') 打开url失败: HTTPSConnectionPool(host='www.9555.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1122)')))

2 END

本文首发微信公众号:梯阅线条

更多内容参考python知识分享或软件测试开发目录。

文章转载自梯阅线条,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论