Python(二十六)python的错误处理机制

关于python的异常处理,这个在工作中应用很重要。

我们编写的程序难免会出现bug,那么,如何在程序出现bug的时候避免程序退出,能让程序平滑的运行,这对我们软件使用的人机交互,是一件很重要的事情。

Python常见异常类型

1640161832161034.png

一:使用try......except处理异常

1:基本语法:

python 复制代码
try:
    可能产生异常的代码块
except [ (Error1, Error2, ... ) [as e] ]:
    处理异常的代码块1
except [ (Error3, Error4, ... ) [as e] ]:
    处理异常的代码块2
except  [Exception]:
    处理其它异常

对,你没看错,except处理异常可以有多个。

从上边的语法中我们也可以看到,except对应的[]中可以有多种异常类型,那就说明,一个except可以处理多种异常。

当程序发生不同的意外情况时,会对应特定的异常类型,Python 解释器会根据该异常类型选择对应的 except 块来处理该异常。

2:示例

python 复制代码
try:
    a = int(input("输入被除数:"))
    b = int(input("输入除数:"))
    c = a / b
    print("您输入的两个数相除的结果是:", c )
except (ZeroDivisionError):
    print("除数为0")
except (ValueError, ArithmeticError):
    print("程序发生了数字格式异常、算术异常之一")
except :
    print("未知异常")
print("程序未中断")

这是一个可交互的示例:可用于测试不同的异常类型

输出:

输入被除数:1

输入除数:0

除数为0

程序未中断

二:使用try......except......else处理异常

1:基本语法:

python 复制代码
try:
    可能产生异常的代码块
except [ (Error1, Error2, ... ) [as e] ]:
    处理异常的代码块1
except [ (Error3, Error4, ... ) [as e] ]:
    处理异常的代码块2
except  [Exception]:
    处理其它异常
else:
       执行未出现异常执行的程序

注意:Else 必须配合 try......except使用,没有 try......else这个语法

2:示例

我们还是使用上个示例简单的修改一下

python 复制代码
try:
    a = int(input("输入被除数:"))
    b = int(input("输入除数:"))
    c = a / b
except (ZeroDivisionError):
    print("除数为0")
except (ValueError, ArithmeticError):
    print("程序发生了数字格式异常、算术异常之一")
except :
    print("未知异常")
else:
    print("您输入的两个数相除的结果是:", c)
print("程序未中断")

输出:

输入被除数:10

输入除数:5

您输入的两个数相除的结果是: 2.0

程序未中断

三:使用try......except......else......finally处理异常

1:语法

python 复制代码
try:
    可能产生异常的代码块
except [ (Error1, Error2, ... ) [as e] ]:
    处理异常的代码块1
except [ (Error3, Error4, ... ) [as e] ]:
    处理异常的代码块2
except  [Exception]:
    处理其它异常
else:
       执行未出现异常执行的程序
finally:
       无论 try 块是否发生异常,最终都要进入 finally 语句,并执行其中的代码块。

注意,和 else 语句不同,finally 只要求和 try 搭配使用,而至于该结构中是否包含 except 以及 else,对于 finally 不是必须的(else 必须和 try except 搭配使用)。

2:示例

python 复制代码
try:
    a = int(input("输入被除数:"))
    b = int(input("输入除数:"))
    c = a / b
except (ZeroDivisionError):
    print("除数为0")
except (ValueError, ArithmeticError):
    print("程序发生了数字格式异常、算术异常之一")
except :
    print("未知异常")
else:
    print("您输入的两个数相除的结果是:", c)
finally:
    print("进入finally中......")
print("程序未中断")

输出:

输入被除数:10

输入除数:5

您输入的两个数相除的结果是: 2.0

进入finally中......

程序未中断

四:总结

我目前是做PHP开发,PHP中对应错误处理的方式是:

try{}catch(Exception $e){}

一般这个添加这个就是为了处理未知的错误

已知可能出现的错误,我们一般可能在正常的逻辑代码中使用if做了判断

那么我想我在python中想我在使用PHP中类似的错误处理逻辑应该也是没有问题的。

嗯,后期再实际开发中遇到了问题,会再来补充的。

有好的建议,请在下方输入你的评论。

相关推荐
zbdx不知名菜鸡17 分钟前
深度学习参数管理
python·深度学习·机器学习
X² 编程说31 分钟前
14.面试算法-字符串常见算法题(三)
java·数据结构·后端·算法·面试
音程1 小时前
一次使用threading.Thread来实现Pytorch多个模型并发运行的失败案例
人工智能·pytorch·python
请不要叫我菜鸡1 小时前
Go语言基础学习02-命令源码文件;库源码文件;类型推断;变量重声明
linux·后端·golang·类型推断·短变量·变量重声明·库源码文件
凯子坚持 c1 小时前
【机器学习】--- 决策树与随机森林
python·决策树·随机森林·机器学习
x-cmd1 小时前
x-cmd pkg | bat: cat 命令现代化替代品,终端用户必备工具
运维·python·rust·终端·命令行·bat·cat
计算机编程-吉哥1 小时前
计算机毕业设计 基于Python的校园个人闲置物品换购平台 闲置物品交易平台 Python+Django+Vue 前后端分离 附源码 讲解 文档
python·django·毕业设计·毕业论文·计算机毕业设计·计算机毕业设计选题·闲置物品交易
爱技术的小伙子1 小时前
【30天玩转python】使用第三方库(如 NumPy、Pandas)
python·numpy·pandas
繁依Fanyi1 小时前
828华为云征文|华为Flexus云服务器打造《我的世界》游戏服务器
java·服务器·开发语言·python·算法·华为·华为云
那一抹阳光多灿烂1 小时前
代码随想录训练营 Day62打卡 图论part11 Floyd 算法 A * 算法
数据结构·python·算法·图论