Python3入门笔记八之错误、调试和测试

简介: 错误处理机制try...except...finally...这个的使用和 java 的 try-catch-finally 差不多,只是多了个else来表示没有异常的时候,注意捕获的异常的类 要从子类到父类

错误处理机制try...except...finally...


这个的使用和 java 的 try-catch-finally 差不多,只是多了个else来表示没有异常的时候,注意捕获的异常的类 要从子类到父类


try:
    print('try...')
    r = 10 / int('2')
    print('result:', r)
except ValueError as e:
    print('ValueError:', e)
except ZeroDivisionError as e:
    print('ZeroDivisionError:', e)
else:
    print('no error!')
finally:
    print('finally...')
print('END')
# 打印结果:
# try...
# result: 5.0
# no error!
# finally...
# END
复制代码


熟悉 Java 的小伙伴,是不是一眼就看出这个的不同呢,总感觉用 java 的这个 catch 会更清晰,而且可以写一个 catch 里,而这里得用很多 except 来表示不同的错误,不过这个 else 还是很突出 哈哈~


调用栈 & 记录错误


Python内置的 logging 模块可以非常容易地记录错误信息: 通过配置, logging 还可以把错误记录到日志文件里,方便事后排查。


找bug的操作一般直接定位到最后那里就可以看到了


import logging
def foo(s):
    return 10 / int(s)
def bar(s):
    return foo(s) * 2
def main():
    try:
        bar('0')
    except Exception as e:
        logging.exception(e)
main()
print('END')
# 打印结果:
# ERROR:root:division by zero
# Traceback (most recent call last):
#   File "<ipython-input-5-cc27997fe30e>", line 11, in main
#     bar('0')
#   File "<ipython-input-5-cc27997fe30e>", line 7, in bar
#     return foo(s) * 2
#   File "<ipython-input-5-cc27997fe30e>", line 4, in foo
#     return 10 / int(s)
# ZeroDivisionError: division by zero
# END
复制代码


这个日志感觉也没啥特别~ 毕竟大家都是日志 😄


抛出错误


这个和java抛出异常的操作也一样(只是java里Error是没法捕获的,一般是虚拟机或系统的Error如OutOfMemoryError。异常是可以解决的,如RuntimeException等等)。


下级决定不了的Error就抛给上级,用raise语句抛出错误


def foo(s):
    n = int(s)
    if n==0:
        raise ValueError('invalid value: %s' % s)
    return 10 / n
def bar():
    try:
        foo('0')
    except ValueError as e:
        print('ValueError!')
        print(e)
bar()
复制代码


这里还是有点不同的,这个错误居然还可以再往上抛~


目录
相关文章
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
372 1
|
4月前
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
476 0
|
5月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
5月前
|
JavaScript 测试技术 API
Playwright自动化测试系列(3) | 第二阶段:核心技能与调试 ​​交互操作大全
本课程为Playwright自动化测试第三阶段,深入讲解核心交互操作与调试技巧。涵盖基础到高级交互、文件上传下载、疑难问题解决及复杂场景应对,并提供稳定性优化方案,帮助开发者高效构建健壮的自动化测试脚本。
|
5月前
|
Web App开发 JavaScript 测试技术
Playwright 极速入门:1 小时搞定环境搭建与首个测试脚本
本文带你1小时快速入门Playwright,完成环境搭建并编写首个测试脚本。Playwright是微软推出的现代化Web自动化测试工具,支持Chromium、Firefox和WebKit三大浏览器引擎,具备跨平台、多语言(Python/JS/Java/C#)特性。其核心优势包括:智能自动等待机制减少失败率、内置录制工具实时生成脚本、多语言灵活选择,以及真移动端设备模拟能力,显著提升测试效率和可靠性。
|
5月前
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
219 0
|
6月前
|
数据可视化 测试技术 Go
Go 语言测试与调试:`go test` 工具用法
`go test` 是 Go 语言内置的测试工具,支持单元测试、基准测试、示例测试等功能。本文详解其常用参数、调试技巧及性能测试命令,并提供实际项目中的应用示例与最佳实践。
|
5月前
|
人工智能 JavaScript 前端开发
Playwright自动化测试系列课(5) | ​​调试神器实战:Trace Viewer 录屏分析 + AI 辅助定位修复​
Playwright 的 Trace Viewer 提供录屏级追踪,还原测试全过程,帮助定位偶发故障。结合 AI 实现自动修复,大幅提升调试效率,成为自动化测试利器。
|
7月前
|
数据采集 运维 API
把Postman调试脚本秒变Python采集代码的三大技巧
本文介绍了如何借助 Postman 调试工具快速生成 Python 爬虫代码,并结合爬虫代理实现高效数据采集。文章通过“跨界混搭”结构,先讲解 Postman 的 API 调试功能,再映射到 Python 爬虫技术,重点分享三大技巧:利用 Postman 生成请求骨架、通过 Session 管理 Cookie 和 User-Agent,以及集成代理 IP 提升稳定性。以票务信息采集为例,展示完整实现流程,探讨其在抗封锁、团队协作等方面的价值,帮助开发者快速构建生产级爬虫代码。
271 1
把Postman调试脚本秒变Python采集代码的三大技巧
|
5月前
|
API 数据安全/隐私保护 Python
小红书批量发布协议, 抖音自动批量发布软件脚本,笔记作品视频自动发布工具【python】
这个工具框架包含了小红书和抖音的批量发布功能,支持图片和视频处理、定时发布等功能

推荐镜像

更多