一、异常处理

针对在运行时可能会出错的语句块,可以提前设计好出现问题后的解决方案,

或者给出相应的提示信息。使用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 -- 程序异常与调试(异常处理)的更多相关文章

  1. python -- 程序异常与调试(程序调试)

    一.程序调试 A.使用assert语句检测程序代码中的错误. assert 表达式[, 参数] 如果表达式为True,则继续往下运行:如果为False,则抛出一个AssertionError异常,并且 ...

  2. python -- 程序异常与调试(识别异常)

    一.识别异常 程序中出现的错误又称为异常.异常通常分为两大类:编译错误和运行错误. 如下源码是已经修改: # -----------------------------------------# 编程 ...

  3. Python程序高效地调试

    现在我在debug python程序就只是简单在有可能错误的地方print出来看一下,不知道python有没像c++的一些IDE一样有单步调试这类的工具?或者说各位python大神一般是怎么debug ...

  4. python程序中的调试:pdb

    python中,也有像c/c++语言的 gdb 一样的调试程序,即pdb: 只简单说明一个怎么使用它. 假设已经有了一个python程序名为 test.py, 我们在命令行输入以下内容,即可以进行 p ...

  5. python程序里加入调试断点

    在需要打断的地方加入:import pdb;pdb.set_trace()即可 如:

  6. Python如何实现单步调试

    遇到大型python项目,如何定位问题和监控程序的运行状态是一个程序员必须掌握的技能,今天小编为你带来python程序的单步调试方法,方便易用,简单易记! 首先你需要在所调试程序的开头中:import ...

  7. Python标准异常和异常处理详解

    python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 1.异常处理: 本站Python教程会具体介绍. 2.断言(Asserti ...

  8. 转 Python3 错误和异常/ Python学习之错误调试和测试

    ########sample 0 https://www.cnblogs.com/Simon-xm/p/4073028.html except: #捕获所有异常 except: <异常名> ...

  9. python 全栈开发,Day30(纸牌游戏,异常和错误,异常处理)

    一.纸牌游戏                                                                                              ...

随机推荐

  1. TensorRT 数据格式说明

    TensorRT数据格式说明 NVIDIA  TensorRT支持不同的数据格式.需要考虑两个方面:数据类型和布局. 数据类型格式 数据类型是每个单独值的表示.它的大小决定了数值的范围和表示的精度:分 ...

  2. TensorFlow基础剖析

    TensorFlow基础剖析 一.概述 TensorFlow 是一个使用数据流图 (Dataflow Graph) 表达数值计算的开源软件库.它使 用节点表示抽象的数学计算,并使用 OP 表达计算的逻 ...

  3. CVPR2020:利用图像投票增强点云中的三维目标检测(ImVoteNet)

    CVPR2020:利用图像投票增强点云中的三维目标检测(ImVoteNet) ImVoteNet: Boosting 3D Object Detection in Point Clouds With ...

  4. LeetCode---105. 从前序与中序遍历序列构造二叉树 (Medium)

    题目:105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7 ...

  5. NCF WebApi中 Controller的全解析

    简介 上一篇我们说了如何实现一个WebApi,并运行起来 这次我们来说说WebApi的内在,我们到底做了哪些事情 仓库地址:https://github.com/NeuCharFramework/NC ...

  6. 【NX二次开发】Block UI 指定坐标系

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  7. FlinkSQL写入Kafka/ES/MySQL示例-JAVA

    一.背景说明 Flink的API做了4层的封装,上两层TableAPI.SQL语法相对简单便于编写,面对小需求可以快速上手解决,本文参考官网及部分线上教程编写source端.sink端代码,分别读取s ...

  8. 记一次项目中解决 -- 并发减库存超卖问题过程(Java)

    起因:项目中要做预约功能,首先每天的余票都是有上限的,自然不能出现超卖的情况 基于我们项目是单体分布式的springcloud部署,我想了下 第一种方法,直接mysql加行锁,要update这条库存数 ...

  9. Ajax(内含json)认识

    Ajax 认识 一.概念 1.Ajax 即"Asynchronous Javascript And XML"(英[eɪˈsɪŋkrənəs]异步 JavaScript 和 XML) ...

  10. Java知识,面试总会问到虚拟机,虚拟机类加载机制你懂吗?

    虚拟机把描述类的数据从Class文件文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 与那些在编译时需要进行连接工作的语言不同 ...