python -- 程序异常与调试(异常处理)
一、异常处理
针对在运行时可能会出错的语句块,可以提前设计好出现问题后的解决方案,
或者给出相应的提示信息。使用try…except语句来处理Python抛出的异常:

# -----------------------------------------
# 异常捕获
# -----------------------------------------
# 在except语句中使用pass语句,忽略发生的异常
list1 = ['100', '200', '三百', '四百', '500']
total = 0
for e in list1:
try:
total = total + int(e)
except:
pass
print(total)
# 文件不存在
try:
file = open("config.txt", "r")
except FileNotFoundError:
print("文件不存在!")
# 用户按下Ctrl+C组合键时抛出键盘中断异常
pwd = 888 # 用户密码
num = -1 # 输入密码
times = 0 # 密码输入的错误次数
while num != pwd:
try:
num = int(input("请输入三位数字的密码:"))
except ValueError:
print("请确认输入的是数字!")
continue
except: # 万能异常捕获
print("退出")
break
if num != pwd:
print("密码错误!")
times += 1
if times >= 3:
print("密码错误超过3次,请明天再试!")
break
else:
continue
else:
print("密码正确!")
else:
print("登录成功!")
# 使用raise主动抛出异常
def zero_div():
x = 100
y = 0
if y == 0:
# 一旦抛出异常,且未做相应的异常捕获,程序会就此退出。
raise ZeroDivisionError("除数不能为0!")
z = x / y
print(z)
# zero_div()
try:
zero_div()
except ZeroDivisionError:
print("捕获到一个ZeroDivisionError异常!")
else: #只有try为正常情况,才会执行else语句
print("test1")
finally: #不管是正常还是异常都会执行该语句
print("test2")
# 如果抛出一个SystemExit异常会强制结束Python解释器的运行
raise SystemExit
# -----------------------------------------
# 自定义异常
# -----------------------------------------
class ExitLoop(Exception):
pass
try:
x = 1
while x < 5:
for y in range(1, 5):
print(x, y)
if (x == 3) and (y == 3):
# 通过抛出一个异常,直接跳出多层嵌套循环
raise ExitLoop
x += 1
except ExitLoop:
print("当x = 3, y = 3时跳出嵌套循环")
class CustomError(Exception):
def __init__(self, err='自定义错误'):
Exception.__init__(self, err)
raise CustomError
python -- 程序异常与调试(异常处理)的更多相关文章
- python -- 程序异常与调试(程序调试)
一.程序调试 A.使用assert语句检测程序代码中的错误. assert 表达式[, 参数] 如果表达式为True,则继续往下运行:如果为False,则抛出一个AssertionError异常,并且 ...
- python -- 程序异常与调试(识别异常)
一.识别异常 程序中出现的错误又称为异常.异常通常分为两大类:编译错误和运行错误. 如下源码是已经修改: # -----------------------------------------# 编程 ...
- Python程序高效地调试
现在我在debug python程序就只是简单在有可能错误的地方print出来看一下,不知道python有没像c++的一些IDE一样有单步调试这类的工具?或者说各位python大神一般是怎么debug ...
- python程序中的调试:pdb
python中,也有像c/c++语言的 gdb 一样的调试程序,即pdb: 只简单说明一个怎么使用它. 假设已经有了一个python程序名为 test.py, 我们在命令行输入以下内容,即可以进行 p ...
- python程序里加入调试断点
在需要打断的地方加入:import pdb;pdb.set_trace()即可 如:
- Python如何实现单步调试
遇到大型python项目,如何定位问题和监控程序的运行状态是一个程序员必须掌握的技能,今天小编为你带来python程序的单步调试方法,方便易用,简单易记! 首先你需要在所调试程序的开头中:import ...
- Python标准异常和异常处理详解
python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 1.异常处理: 本站Python教程会具体介绍. 2.断言(Asserti ...
- 转 Python3 错误和异常/ Python学习之错误调试和测试
########sample 0 https://www.cnblogs.com/Simon-xm/p/4073028.html except: #捕获所有异常 except: <异常名> ...
- python 全栈开发,Day30(纸牌游戏,异常和错误,异常处理)
一.纸牌游戏 ...
随机推荐
- 基于ARM Cortex-M的SoC存储体系结构和实战
基于ARM Cortex-M的SoC存储体系结构和实战 System on Chip Architecture Tutorial Memory Architecture for ARM Cortex- ...
- wrk(2)- Lua 脚本的使用
背景 要用 wrk 进行压测 看了下其他同事的压测,都用了 Lua 脚本来自定义一些东西 所以这一篇主要讲 Lua 脚本 Lua 介绍 Lua 脚本是一种轻量小巧的脚本语言,用标准 c 语言编写,并以 ...
- VLAN与三层交换机
VLAN概述与优势 ①分割广播域 物理分割 逻辑分割 ②VLAN的优势 控制广播 增强网络安全性 简化网络管理 VLAN的范围 VlAN ID范围 范围 用途 0,4095 保留 仅限系统使用,用户 ...
- Redis 入门权威指北
前言 看看业务遇到了什么问题? 我们要从互联网架构的演变之路开始说起Redis的前世今生. 在我们小的时候,网络世界好像就是只有通过大屁股台式机才能进入一样,彼时的手机只是用来打打电话,发发短信,网上 ...
- 【题解】coin HDU2884 多重背包
题目 Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 玩转STM32MP157-开发环境搭建
(一)STM32MP 1.什么是 STM32MPU STM32MPU是 ST 推出的 Cortex-A7 + Cortex-M4 多核异构处理器 STM32MPU151 是单核 A7+M4,.STM3 ...
- 源代码管理相关命令(Git常用命令、Nuget常用命令、CMD常用命令)
Git常用命令 源代码工具 工具名称 相关地址 Git Git for Windows VSC Visual Studio Code VSC插件(Gitlen) GitLens - Git super ...
- Linux中useradd的用法
语法:useradd [选项] 用户名 选项: -d<登陆目录> 指定新用户登陆的起始目录,默认为/home -e<有效期限> 指定用户的有效期限,格式为 YYYY-MM-DD ...
- QObject::startTimer: timers cannot be started from another thread 一则输出调试:关于QT的线程关联性
开始 今天在调试输出里看见QObject::startTimer: timers cannot be started from another thread QTimer类 从Qt的帮助文档里可以得到 ...
- 7.2、compute节点配置
用于创建虚拟机的节点: 0.配置openstack版本yum源: yum install centos-release-openstack-rocky 1.nova-compute的安装: (1)安装 ...