当前位置: 首页 > news >正文

python使用try-except-else处理异常

异常exception

Python 使用称为异常(exception)的特殊对象来管理程序执行期间发生的错误。每当发生让 Python 不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。

使用 try-except 代码块

在cmd中输入print(5/0)会得到一个Traceback告诉我们除数不能为0

>>> print(5/0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

出现Traceback之后,代码也就停止运行了。
为了避免出先Traceback,我们可以使用try-except语句:如果 try 代码块中的代码运行起来没有问题,Python 将跳过 except 代码块;如果 try 代码块中的代码导致错误,Python 将查找与之匹配的 except 代码块并运行其中的代码。

try:
    print(5/0)
except ZeroDivisionError:
    print("除数不能为0!")
    
"""输出结果:
除数不能为0!
"""

使用 try-except-else 代码块

print("输入两个数,计算它们的商")
print("输入'q'停止")

while True:
    first_number = input("\n第一个数字: ")
    if first_number == 'q':
        break
    second_number = input("第二个数字: ")
    if second_number == 'q':
        break
    answer = int(first_number) / int(second_number)
    print(answer)

如果输入的第二个数字是0,同样会报错

输入两个数,计算它们的商
输入'q'停止

第一个数字: 5
第二个数字: 0
Traceback (most recent call last):
  File "c:\Desktop\error\division_calculator.py", line 11, in <module>
    answer = int(first_number) / int(second_number)
             ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
ZeroDivisionError: division by zero

碰到异常时如何处理异常,需要使用 try-except-else 代码块,只有 try 代码块成功执行才需要继续执行的代码,都应放到 else 代码块中

print("输入两个数,计算它们的商")
print("输入'q'停止")

while True:
    first_number = input("\n第一个数字: ")
    if first_number == 'q':
        break
    second_number = input("第二个数字: ")
    if second_number == 'q':
        break
    try:
        answer = int(first_number) / int(second_number)
    except ZeroDivisionError:
        print('除数不能为0!')
    else:
        print(answer)

此时第二个数字是0时,会打印出除数不能为0!

输入两个数,计算它们的商
输入'q'停止

第一个数字: 5
第二个数字: 0
除数不能为0!

静默失败

print("输入两个数,计算它们的商")
print("输入'q'停止")

while True:
    first_number = input("\n第一个数字: ")
    if first_number == 'q':
        break
    second_number = input("第二个数字: ")
    if second_number == 'q':
        break
    try:
        answer = int(first_number) / int(second_number)
    except ZeroDivisionError:
        pass
    else:
        print(answer)

此时,第二个数字输入0时,不会出现异常,也不会提示除数不能为0!

输入两个数,计算它们的商
输入'q'停止

第一个数字: 5
第二个数字: 0

相关文章:

  • AndroidStudio查看Sqlite和SharedPreference
  • 利用蓝耘智算平台深度搭建deepseek R1模型,进行深度机器学习
  • git 提示 fatal: The remote end hung up unexpectedly
  • 网络安全 “免疫力”:从人体免疫系统看防御策略
  • Windchill开发-电子仓相关对象信息查询SQL
  • CCF-GESP 等级考试 2024年9月认证C++二级真题解析
  • 《网络编程卷2:进程间通信》第八章:共享内存深度解析与多进程高性能通信实践
  • 【前端OCR】如何用paddlejs开发一个属于前端本地的OCR文本识别功能
  • 江科大51单片机学习笔记(2)
  • 在Linux中Redis不支持lua脚本的处理方法
  • 基于 GEE 计算研究区年均地表温度数据
  • 通过C或C++编程语言实现某一个或多个具体算法
  • AI大模型(DeepSeek)科研应用、论文写作、数据分析与AI绘图学习
  • Winform禁止高分辨下缩放布局成功方法
  • 08模拟法 + 技巧 + 数学 + 缓存(D2_技巧)
  • 运用Deek Seeker协助数据分析
  • GitCode 助力 Dora SSR:开启游戏开发新征程
  • 对PosWiseFFN的改进: MoE、PKM、UltraMem
  • RocketMQ与kafka如何解决消息积压问题?
  • 网络性能测试工具ipref
  • 免费制作自己的网站长/外贸平台排行榜前十名
  • 手机怎么做网站教程/广安seo外包
  • 昆山做网站好的/seo外包 靠谱
  • 建设学分银行网站策划书/seo泛目录培训
  • 自做网站多少钱/东营seo
  • 资深的网站建设/google关键词指数