一、异常处理

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

或者给出相应的提示信息。使用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. Docker基本概念介绍

    前言 Docker和Kubernetes是我最近在学习的内容,本来是去年的目标,由于工作比较忙,没有时间去学习,今年剩下的半年时间我会好好系统学习下相关的内容,最后在学习下Devops相关理念,希望最 ...

  2. Python_Selenium 之以login_page为例实现对basepage封装好的方法调用和对common中公共方法的调用

    目的:简化代码,提供框架该有的东西每一个函数 -提供了一个功能 - 公共的功能有了basepage,在PageObjects当中直接调用元素操作. 以下以login_page 为例,实现从配置文件中读 ...

  3. Kubernetes 实战——配置应用(ConfigMap、Secret)

    配置容器化应用的方式:①命令行参数:②环境变量:③文件化配置 一.向容器传递命令行参数或环境变量 这两种方式在 Pod 创建后不可被修改 1. 在Docker中定义命令与参数 ENTRYPOINT:容 ...

  4. Go语言十六进制转十进制

    Go语言十六进制转十进制 代码Demo import ( "fmt" "strconv" "testing" ) func Test_1(t ...

  5. 上手 Raspberry Pi Pico

    什么是 PICO Raspberry Pi Pico 是树莓派推出的一块基于 Arm Cortex-M0+ 内核的 MCU 的开发板,使用的 MCU 是树莓派自己研发的 Arm Cortex-M0+ ...

  6. 基于 CentOS 8 搭建 openLDAP 服务器

    转载请注明原文地址:基于 CentOS 8 搭建 openLDAP 服务器 环境 OS: CentOS 8.4.2105 PHP: 7.4.21 注意 CentOS 7 中可能默认提供了 openLD ...

  7. 堆和栈的内存分布&一些关于内存泄露、栈溢出和野指针的内容(头秃

    内存泄漏&栈溢出 C++中,我们主要涉及的内存是栈和堆, 堆  (By programmer) 申请后由程序员主动释放,遗忘后果严重: 栈 (By compiler)需要时由编译器分配,在不需 ...

  8. k8s结合jumpserver做kubectl权限控制 用户在多个namespaces的访问权限 rbac权限控制

    圈子太小,做人留一面,日后好相见. 其实这个文章就是用户用jumpserver登录到k8s master节点 然后执行kubectl的时候只有自己namespaces的所有权限. 背景 1,k8s 有 ...

  9. ActiveMq 之JMS 看这一篇就够了

    什么是JMS MQ 全称:Java MessageService 中文:Java 消息服务. JMS 是 Java 的一套 API 标准,最初的目的是为了使应用程序能够访问现有的 MOM 系 统(MO ...

  10. JavaScript中for...in循环使用问题

    问题 使用for...in去遍历一个数组,同时将值添加到另外一个数组时,新的数组中每次都多出来一个function类型的元素. 原因及解决方案 for...in用来循环本身没有问题,但是经常被误用来遍 ...