[oeasy]python0139_尝试捕获异常_ try_except_traceback

这篇具有很好参考价值的文章主要介绍了[oeasy]python0139_尝试捕获异常_ try_except_traceback。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

尝试捕获异常

回忆上次内容

  • 变量相加
    • 整型数字变量可以相加
    • 字符串变量也可以拼接
  • 但是
    • 字符串 和 整型数字
    • 整型数字 和 字符串
    • 不能相加
  • 怎么办?
    • 转格式
    • int(“1”)
    • str(2)
  • 可是
    • 如果输入的苹果数量是
      • 字符串"abc"
    • int(“abc”)会发生什么??😱

先试试看

  • 虽然我有了心理准备
    • 但是 python 显然还没有准备好

[oeasy]python0139_尝试捕获异常_ try_except_traceback

  • 要让 python 知道
    • 什么时候可能会出错

简化问题

  • python3 的意思是
    • 不知道怎么把 abc 转化为十进制数
  • 不但 python3 没有办法转化
    • 我也没有思路

[oeasy]python0139_尝试捕获异常_ try_except_traceback

  • 有的时候数字中确实可以有 abc
    • 比如 0xa 这种形式
  • 0xabc 是可以转化为数字的
    • abc 是不能转化的
      • 如何进行区分呢

思路

  • 尝试转化的工作
    • 出现在倒数第二行
    • total = int(a) + int(b)
  • 需要做的
    • 着 运行这一行
#!/usr/bin/python3
a = input("How many apples do you have: ")
print("You have got " + a + " apples!")
b = input("How many banana do you have: ")
print("You have got " + b + " bananas!")
total = int(a) + int(b)
print("You have got " + str(total) + " fruits in all!")
  • 既然 给了用户输入的 权利
    • 就要处理 用户输入的错误
  • 如果遇到了 不能转化的情况
    • 就要处理
      • 给用户 一个 明确的报错
  • 怎么才能让 python3 试着运行呢?

搜索 try

  • 搜索一下 python3 + try

[oeasy]python0139_尝试捕获异常_ try_except_traceback

try

  • try 就是 试着来

    • 把需要试着来的代码部分放到 try 里面
      [oeasy]python0139_尝试捕获异常_ try_except_traceback
  • 试着 成功了

    • 就继续运行 try里面的代码
    • 直到完成 try中所有的代码
  • 试着 失败了

    • 就跳转到except部分 执行
  • 这就是

    • 异常的处理

试着来

  • 下面的源代码
    • 可以直接复制
    • 系统会将两个反斜杠\\
      • 转义成一个反斜杠\
#!/usr/bin/python3
a = input("How many apples do you got?\\n")
print("You got " + a + " apples!")
b = input("How many bananas do you got?\\n")
print("You got " + b + " bananas!")
try:
    total = int(a) + int(b)
except:
    print("\\33[41m[error]\\33[0m -- input should be numbers!")
print("You got " + str(total) + " fruits!")
  • 注意
    • 冒号
      • 是英文半角的
      • 要紧跟着 try、except
    • 缩进
      • 待尝试的内容需要缩进 4 个字符
      • total = int(a) + int(b)
      • 所有需要try的内容都要
        • 缩进
      • 就像while True中需要循环的循环体
        • 需要缩进一样
      • 缩进距离不多不少
        • 4个就很合适

尝试运行

  • 运行失败了
    • 成功报了错

[oeasy]python0139_尝试捕获异常_ try_except_traceback

  • 原来想的是 试着执行这句
    • total = int(a) + int(b)
  • 可是这句 里面
    • 不但进行 类型转化
    • 还声明了 一个变量 total
  • 这个total
    • 由于int(“a”) 会出现错误
    • 根本没有被声明
    • 而且 后面还要被引用
  • 后面引用不到
    • 所以报错了
    • 没 try成功
  • 怎么办?

再次修正

  • 都放 try 里面
#!/usr/bin/python
a = input("How many apples do you got?\\n")
print("You got " + a + " apples!")
b = input("How many bananas do you got?\\n")
print("You got " + b + " bananas!")
try:
    total = int(a) + int(b)
    print("You got " + str(total) + " fruits!")
except:
    print("\\33[41m[error]\\33[0m -- input should be numbers!")

尝试

  • 试试行不行

[oeasy]python0139_尝试捕获异常_ try_except_traceback

  • 这次终于成功地报错了!
    • 或者说我接管了相关的报错信息
    • 对于这类错有了自己的处理
    • 这就是捕获了异常
    • 并且处理了异常
  • 红颜色的 error 好扎眼
    • 我把他瞒下来
    • 不报错可以么?

不报错

#!/usr/bin/python
a = input("How many apples do you got?\\n")
print("You got " + a + " apples!")
b = input("How many bananas do you got?\\n")
print("You got " + b + " bananas!")
try:
    total = int(a) + int(b)
    print("You got " + str(total) + " fruits!")
except:
    pass

[oeasy]python0139_尝试捕获异常_ try_except_traceback

  • 这不行!!!😡
    • 异常错误不处理不行
    • 要明确得处理
    • 要明确的报错
  • 知道哪里错了
    • 才好修改
  • 如果假装没犯错
    • 就会完全没有处理线索
    • 程序大了绝对让人彻底崩溃

对应禅语

  • 错误不应被悄悄传递
    • 除非你确定需要这样做

[oeasy]python0139_尝试捕获异常_ try_except_traceback

  • 精准地捕获异常
    • 不写 except:pass 风格的代码
    • 那什么是 except:pass 风格的代码呢?

异常飘过

  • 就是 那种知错不报错的方式
    • 虽然 except接收到了错误
    • 但是 轻轻飘过pass

[oeasy]python0139_尝试捕获异常_ try_except_traceback

  • 上面这是错的!
    • 这是最要命的
    • 让人没有追踪trace的痕迹
    • 无法调试debug!
    • 无语问苍天😭!
  • 不但要有自己的报错
    • 还要保留系统的报错
  • 有可能吗?

保留报错

[oeasy]python0139_尝试捕获异常_ try_except_traceback

  • 最终结果

[oeasy]python0139_尝试捕获异常_ try_except_traceback

  • 可以让报错详细一些吗?
  • 比如文件、行号

保留报错细节

[oeasy]python0139_尝试捕获异常_ try_except_traceback

  • import traceback
    • traceback.print_exc()

[oeasy]python0139_尝试捕获异常_ try_except_traceback

总结

  • 这次学习了

    • try
    • except
  • 注意要点

    • 半角冒号
    • 缩进
    • 错误信息输出
  • 有错就处理

    • 不要忽略、隐瞒
    • 否则找不到出错位置
    • 还可以用traceback把
      • 系统报错信息原样输出
  • 但是代码量好多啊

    • 10多 行了 🤯
    • 可以把他输入部分和输出部分么?🤔
  • 我们下次再说!👋

  • 蓝桥->https://www.lanqiao.cn/courses/3584

  • github->https://github.com/overmind1980/oeasy-python-tutorial

  • gitee->https://gitee.com/overmind1980/oeasypython文章来源地址https://www.toymoban.com/news/detail-424558.html

到了这里,关于[oeasy]python0139_尝试捕获异常_ try_except_traceback的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java开发者的Python快速进修指南:异常捕获

    在之前的学习中,我们已经讲解了函数和控制流等基本概念。然而,在接触实际业务时,你会发现异常捕获也是必不可少的一部分,因为在Java编程中,异常处理是不可或缺的。Python的异常捕获与Java的异常捕获原理是相同的,只是在写法上有一些区别。它们的目的都是为了处

    2024年02月05日
    浏览(63)
  • 仅需6道题轻松掌握Python异常捕获 | Python技能树征题

    由于 Python 直接从源代码运行程序,在 Python 测试或运行代码之前没有编译器进行代码分析,因此测试和异常处理是 Python 程序开发的中的重要组成部分,我们就通过 6 道 Python 编程题来掌握常见异常处理的方法吧! 知识点描述:使用测试用例判断异常是否被抛出。 问题描述:

    2023年04月08日
    浏览(35)
  • Python笔记2(函数参数、面向对象、装饰器、高级函数、捕获异常、dir)

    Python笔记1(赋值、浅拷贝和深拷贝、字符串日期转换、argparse、sys、overwrite、eval、json.dumps/json.loads、os.system(cmd)、zfill、endswith、open) 参数定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开。 定义

    2024年02月08日
    浏览(40)
  • 【C++】异常处理 ① ( 异常概念引入 | 抛出异常语法 | 捕获异常语法 | 异常捕获流程 | 异常处理代码示例 )

    异常是一种 特殊的程序流控制机制 , 用于处理程序中可能出现的错误或异常情况 ; 当程序执行错误时 , 由 throw 抛出异常 , 并即跳转到相应的异常处理程序中 ; 如果没有适当的异常处理程序处理该异常 , 程序会崩溃终止 ; 异常与函数对比 : 函数 是一种 以 栈结构 展开的

    2024年02月04日
    浏览(39)
  • 爬虫异常处理:异常捕获与容错机制设计

    作为一名专业的爬虫程序员,每天使用爬虫IP面对各种异常情况是我们每天都会遇到的事情。 在爬取数据的过程中,我们经常会遇到网络错误、页面结构变化、被反爬虫机制拦截等问题。在这篇文章中,我将和大家分享一些关于如何处理爬虫异常情况的经验和技巧。通过异常

    2024年02月11日
    浏览(33)
  • java异常处理机制(二)之异常处理与捕获

    1 Error(错误): 是指程序无法处理的错误,表示运行应用程序时比较严重的问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM(Java 虚拟机)出现的问题。 2 异常(Exception): 是指在程序执行时由于程序处理逻辑上的错误而导致程序中断的一种指令流。通俗的

    2024年02月05日
    浏览(93)
  • Java 异常处理以及如何捕获和处理多个异常

    在Java中,我们使用异常处理程序组件try,catch和finally块来处理异常。 为了捕获和处理异常,我们将try...catch...finally代码块放置在可能产生异常的代码周围。finally块是可选的。 try...catch...finally的语法为: 可能会生成异常的代码放在try块中。 每个try块后面应紧跟着catch 或 fi

    2024年02月14日
    浏览(32)
  • c++捕获异常

    catch  块跟在  try  块后面,用于捕获异常。您可以指定想要捕捉的异常类型,这是由 catch 后的括号内的异常声明决定的。 try { // 保护代码 }catch( ExceptionName e ) { // 处理 ExceptionName 异常的代码 } 上面的代码会捕获一个类型为  ExceptionName  的异常。如果您想让 catch 块能

    2024年02月09日
    浏览(32)
  • Java中的异常Exception和捕获,自定义异常

    1.1 什么是程序的异常  在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的。 异常 :指的是程序在执行过程中,出现的非正常情况,如果不处理最终会导致JVM的非正常停

    2023年04月20日
    浏览(33)
  • 爬虫异常捕获与处理方法详解

    Hey!作为一名专业的爬虫代理供应商,我今天要和大家分享一些关于爬虫异常捕获与处理的方法。在进行爬虫操作时,我们经常会遇到各种异常情况,例如网络连接错误、请求超时、数据解析错误等等。这些异常情况可能会导致程序崩溃或数据丢失,因此,我们需要学会如何

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包