python异常处理

server/2024/10/19 4:20:35/

一、异常捕获

python中,通过捕获异常,使得程序可以不会因为出错停止运行,捕捉程序有可能产生的异常,防止程序由于异常 导致的出错闪退,异常有可能有,也可能不发生。

"""
try: 执行有可能出错的代码
except: 捕获到具体的异常,针对处理
else: except中语句不执行,则执行else
finally: 无论有没有异常都执行
"""
input_str = input("请输入一个数字")
input_str2 = input("请输入一个数字")
try: input_value = int(input_str)input_value2 = int(input_str2)print(f"{input_value}除以{input_value2}得{input_value/input_value2}")print(f"您输入的被除数是{input_value}")print(f"您输入的除数是{input_value2}")
except Exception as e:  # 异常范围太宽泛,不精确print("输入有误,格式转换错误", e)
else:print("没有发现异常")
finally:print("无论有没有异常,都执行")
print("程序正常结束")try:with open("123.txt", "r") as f:print(f.read())
except FileNotFoundError as e:  # 具体异常print("文件不存在")
except Exception as e:print("未知异常")

通过对异常分类,可以跟直观反映代码的异常。

input_str = input("请输入一个数字")
input_str2 = input("请输入一个数字")
try:input_value = int(input_str)input_value2 = int(input_str2)print(f"{input_value}除以{input_value2}得{input_value/input_value2}")print(f"您输入的被除数是{input_value}")print(f"您输入的除数是{input_value2}")
except TypeError as e:print("类型错误")
except ValueError as e:print("数值类型错误")
except ZeroDivisionError as e:print("错误,除数为0")
except Exception as e:print("输入有误,格式转换错误", e)
else:print("没有发现异常")
finally:print("无论有没有异常,都执行")
print("程序正常结束")try:with open("123.txt", "r") as f:print(f.read())
except FileNotFoundError as e:print("文件不存在")
except Exception as e:print("未知异常")

二、异常类型

这里只举几个常见异常,欢迎补充

"""
Exception 异常(较宽泛的异常)
TypeError 类型异常
ValueError 数值异常
ZeroDivisionError  除数为0异常
FileNotFoundError 文件不存在异常
OperationalError 操作异常
ConnectionError 连接异常
"""

三、抛出异常

我们可以自己设置一个异常类,在合适的位置使用raise关键抛出异常,进行捕获。

# 斐波那契数列
class LTOne(Exception):  # 自定义异常类(小于一),继承异常类def __init__(self, msg):super().__init__(msg)  # 接收异常原因反馈while True:value_str = input("请输入查找的位数")try:value = int(value_str)if value < 1:raise LTOne("小于1")  # 传入异常原因else:first = 1second = 1  # 前两个数是1current = 0for i in range(3, value+1):  # 后一位是前两个数的和current = first + secondfirst = secondsecond = currentif value == 1 or value == 2:print(1)else:print(current)except ValueError as e:print("输入数据不能转为数字")except LTOne as e:  # e为异常类LTOne的实例print("输入数字小于1", e)


http://www.ppmy.cn/server/104725.html

相关文章

基于Kotlin Multiplatform的鸿蒙跨平台开发实践

一、 背景 在 2023 年的华为开发者大会&#xff08;HDC&#xff09;上&#xff0c;华为预告了一个全新的鸿蒙系统 Harmony Next 版本。与之前的鸿蒙系统不同&#xff0c;Harmony Next完全摒弃了对 AOSP 的兼容&#xff0c;彻底基于 OpenHarmony 开源鸿蒙实现。这意味着该系统将…

Crypto++:系统架构和数据类型

Crypto&#xff08;也称为CryptoPP、libcrypto或cryptlib&#xff09;是一个免费开源的C库&#xff0c;提供了多种加密方案和安全编程工具。以下是对Crypto的基本架构和主要数据类型的详细阐述&#xff1a; 基本架构 Crypto的设计基于一种灵活且模块化的架构&#xff0c;允许…

对excel进行分组分局第一列隔的列数

List<List<String>> getdata extractDataFromListNullString(chartDateTto.getDataList()); // 获取第一行数据List<String> firstRow getdata.get(0);// 获取第一行第二列的文字&#xff0c;前提是该文字不为 "0"String secondColumnText firs…

小程序审核昵称敏感词问题修复方案

问题&#xff1a;小程序审核的商户&#xff0c;被拒绝&#xff1b; 修改方法&#xff1a; 前端修改,将这个表单的 type 改为 nickname 类型修改后端 &#xff1a;

【SQL】商品销售

目录 题目 分析 代码 题目 表&#xff1a; Product ----------------------- | Column Name | Type | ----------------------- | product_id | int | | product_name | varchar | | unit_price | int | ----------------------- product_id 是该表的主键…

MySQL基础练习题48-连续出现的数字

目录 题目 准备数据 分析数据 题目 找出所有至少连续出现三次的数字。 准备数据 ## 创建库 create database db; use db;## 创建表 Create table If Not Exists Logs (id int, num int)## 向表中插入数据 Truncate table Logs insert into Logs (id, num) values (1, 1) i…

ChatGLM-4-9b-chat本地化|天翼云GPU上vLLM本地部署开源模型完整攻略

“ 拥有一个私有化的领先国产开源大模型&#xff1f;本文详细介绍了如何在天翼云GPU上使用vLLM部署ChatGLM-4-9b-chat本地化模型的完整攻略&#xff0c;助您快速上手。” 01 — vLLM 本来打算用ollama在GPU服务器上部署开源模型GLM4&#xff0c;在之前文章有部署教程&#xff1…

Python计算机视觉——第一章 基本的图像操作和处理

目录 1.1 PIL&#xff1a;Python图像处理类库 1.1.1 转换图像格式 1.1.2 创建缩略图 1.1.3 复制和粘贴图像区域 1.1.4 调整尺寸和旋转 1.2 Matplotlib 1.2.1 绘制图像、点和线 1.2.2 图像轮廓和直方图 1.2.3 交互式标注 1.3 NumPy 1.3.1 图像数组表示 1.3.2 灰度…