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(纸牌游戏,异常和错误,异常处理)
一.纸牌游戏 ...
随机推荐
- 【模拟7.14】B. 熟练剖分(tree) (概率DP)
一道概率神题,考试时没读清题考完看了学长的玄学题解看了好几个小时 首先f[i][j]表示在点 i 为根的子树中,向下最长轻链长度小于等于 j 的概率. 首先递归下去并求出子树大小,然后枚举重儿子,枚举 ...
- redhat6版本网卡绑定做bond
1.编写bond0配置文件 cd /etc/sysconfig/network-scripts(进入网卡配置文件路径) vi ifc-bond0(编辑bond0的配置文件,具体如下) DEVICE=b ...
- JavaScript的介绍概括
1.js是一种轻型的解释性的脚本语言,称为web脚本语言. 2.js的执行原理:当客户端向服务器端请求某个页面时,浏览器端将整个页面中包含JavaScript的脚本代码作为响应内容,发送到客户端的机器 ...
- hackthebox TheNotebook
前言 只拿到了user,提权没成功--有wp说是CVE-2019-5736,我没打成. 打点 nmap-sV -v -A 10.10.10.230 端口扫描结果: PORT STATE SERVICE ...
- Spring Boot 2.x基础教程:使用Redis的发布订阅功能
通过前面一篇集中式缓存的使用教程,我们已经了解了Redis的核心功能:作为K.V存储的高性能缓存. 接下来我们会分几篇来继续讲讲Redis的一些其他强大用法!如果你对此感兴趣,一定要关注收藏我哦! 发 ...
- php 安装 yii 报错: phpunit/phpunit 4.8.32 requires ext-dom *
php 安装 yii 报错: phpunit/phpunit 4.8.32 requires ext-dom * 我的版本是7.0,以7.0为例演示. 先装这两个拓展试试: sudo apt-get ...
- vivo商城促销系统架构设计与实践-概览篇
一.前言 随着商城业务渠道不断扩展,促销玩法不断增多,原商城v2.0架构已经无法满足不断增加的活动玩法,需要进行促销系统的独立建设,与商城解耦,提供纯粹的商城营销活动玩法支撑能力. 我们将分系列来介绍 ...
- Java安全之反序列化回显与内存马
Java安全之反序列化回显与内存马 0x00 前言 按照我个人的理解来说其实只要能拿到Request 和 Response对象即可进行回显的构造,当然这也是众多方式的一种.也是目前用的较多的方式.比如 ...
- div和img垂直居中的方法
div垂直居中可以使用height和line-height,多个div的话就不适用了. 可以使用下面的方式垂直居中 <div class="parent"> <d ...
- VLAN协议与三层交换机 (Access/Trubk/Hrbrid)
VLAN协议与三层交换机(Access/Trunk/Hybrid) 目录 一.VLAN概述 1.1.分割广播域 1.2.VLAN的优势 1.3.静态VLAN 二.Trunk的作用 2.1.概念 2.2 ...