Python错误处理 -- 异常捕获

本套课在线学习视频(网盘地址,保存到网盘即可免费观看):

​​https://pan.quark.cn/s/ebe046289eb0​​

本文详细介绍了Python编程中try-except-else-finally语句的用法,重点讲解了如何通过这些语句对程序中可能出现的异常进行捕获和处理。特别强调了针对特定类型和未指定类型错误的捕获方法,以及else和finally子句的作用,指出它们在确保代码稳健性方面的关键作用。此外,文章还探讨了在爬虫开发过程中如何利用try-except语句应对请求失败、服务器响应延迟等异常情况,以提升代码的稳定性和可靠性。通过实例分析,明确了不论程序是否发生异常,某些代码片段总是需要被执行的重要性,进而提高了爬虫的健壮性和效率。

00:00 - 异常捕获与错误处理

异常捕获的基本用法

程序运行时可能出现各种异常,包括但不限于逻辑错误和外部环境导致的问题。异常会导致程序暂停执行并显示错误消息。为了保证程序能够在遇到异常时继续运行,可以使用Python中的try-except语句进行异常捕获。

try:# 可能产生错误的代码result = 10 / 0
except ZeroDivisionError as e:# 捕获特定类型的错误print(f"Error: {e}")
except Exception as e:# 捕获所有类型的错误print(f"An error occurred: {e}")

示例:处理除数为零的错误

try:result = 10 / 0
except ZeroDivisionError as e:print(f"Error: {e}")
else:print(f"Result: {result}")
finally:print("Execution completed.")

02:00 - Python异常处理:try except else finally详解

try-except-else-finally语句

  • try: 包含可能产生错误的代码。
  • except: 捕获并处理特定类型的错误。
  • else: 当try块中的代码没有产生错误时执行。
  • finally: 无论是否发生错误,都会执行。

示例:综合应用try-except-else-finally

try:result = 10 / 2
except ZeroDivisionError as e:print(f"Error: {e}")
except Exception as e:print(f"An error occurred: {e}")
else:print(f"Result: {result}")
finally:print("Execution completed.")

捕获所有类型的错误

try:result = 10 / 0
except Exception as e:print(f"An error occurred: {e}")
else:print(f"Result: {result}")
finally:print("Execution completed.")

06:30 - 理解并应用异常捕获机制优化爬虫

爬虫中的异常处理

在爬虫开发过程中,经常会遇到请求失败或服务器响应延迟等问题,导致程序运行异常。为保证代码的稳定性和可靠性,引入try-except语句进行异常捕获至关重要。

示例:爬虫中的异常处理

import requestsdef fetch_data(url):try:response = requests.get(url, timeout=5)response.raise_for_status()  # 检查响应状态码except requests.Timeout as e:print(f"Request timed out: {e}")except requests.RequestException as e:print(f"Request failed: {e}")else:print(f"Response status code: {response.status_code}")return response.textfinally:print("Request completed.")url = "https://example.com"
data = fetch_data(url)
if data:print(data[:100])  # 打印响应内容的前100个字符

重试机制

import requestsdef fetch_data(url, retries=3):for i in range(retries):try:response = requests.get(url, timeout=5)response.raise_for_status()return response.textexcept requests.RequestException as e:print(f"Attempt {i+1} failed: {e}")return Noneurl = "https://example.com"
data = fetch_data(url)
if data:print(data[:100])
else:print("All attempts failed.")

总结

在Python编程中,使用try-except-else-finally语句进行异常捕获和处理是确保代码稳健性的关键。通过捕获特定类型和未指定类型的错误,并结合else和finally子句,可以有效地处理程序中可能出现的异常情况。在爬虫开发中,合理应用异常捕获机制可以显著提高代码的稳定性和可靠性,确保在遇到请求失败、服务器响应延迟等问题时,程序能够优雅地处理异常并继续执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/39215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哨兵1SAR空间数据包协议数据单元文档(五)

《哨兵1SAR空间数据包协议数据单元》文档对数据包的结构进行了详细描述,并提供了用户数据的格式和解码算法。 原文链接: 哨兵1SAR空间数据包协议数据单元文档英文版 同系列中的其他文章篇链接: 哨兵1SAR空间数据包协议数据单元文档(一) 哨兵1…

Vue 2 与 ECharts:结合使用实现动态数据可视化

在现代前端开发中,数据可视化变得越来越重要。ECharts 是一个强大的数据可视化库,而 Vue 2 则是一个流行的前端框架。本文将介绍如何将 Vue 2 和 ECharts 结合使用,以实现动态数据可视化。 安装与配置 首先,确保你的项目中已经安…

Redis数据结构——跳跃表 skiplist

跳跃表(Skip List)是一种数据结构,常被用作一种有序的数据结构,提供快速的插入、删除和查找操作,其效率接近于平衡树(如红黑树),但实现起来更简单。 1. 跳跃表的基本概念 层级结构…

保存在FinalShell服务器登录密码忘记了,如何快速获取到

一、从FinalShell获取服务器基本信息 如图操作会导出一个json文件,可以直接保存在桌面,或者其他位置 json格式如下: {"forwarding_auto_reconnect":false ,"custom_size":false ,"delete_time":0 ,"sec…

Python数据分析-旧金山犯罪预测分析(San Francisco Crime Classification)

一、研究背景 旧金山是一个人口稠密、旅游业发达的城市,同时也是美国犯罪率较高的城市之一。随着城市的不断发展,犯罪行为的类型和频率也在不断变化,这对城市的治安管理和社会稳定构成了巨大的挑战。近年来,数据科学技术的迅猛发…

xmind导入导出支持图片功能源码改造

xmind导入导出支持图片功能 在开发用例管理平台的过程中,需要使用xmind来管理用例。所以也涉及到xmind用例的导入导出功能, 在开始的时候,xmind文件中没有图片,所以使用xmind,xmindparser包就可以完成改任务。现在新增需求&#x…

C# 编程中互斥锁的使用

C# 中的互斥锁 互斥锁是 C# 中使用的同步原语,用于控制多个线程或进程对共享资源的访问。其目的是确保在任何给定时间只有一个线程或进程可以获取互斥锁,从而提供互斥。 C# 中互斥锁的优点 可以使用互斥锁 (Mutex) 并享受其带来的好处。 1. 共享资源…

德国威步的技术演进之路(下):从云端许可管理到硬件加密狗的创新

从单机用户许可证到WkNET网络浮点授权的推出,再到引入使用次数和丰富的时间许可证管理,德国威步产品不断满足市场对灵活性和可扩展性的需求。TCP/IP浮动网络许可证进一步展示了威步技术在网络时代的创新应用。借助于2009年推出的借用许可证以及2015年推出…

mac磁盘工具如何合并分区 macos 磁盘工具 无法抹除 磁盘管理软件哪个使用率最高

一、什么是NTFS格式分区 NTFS格式分区是微软公司开发的诸多文件系统中的一种。NTFS格式分区是一种文件系统,磁盘只有在安装了文件系统后才能被正常使用,文件系统的格式有非常多,常见的有FAT 32和NTFS。 作为常见文件系统,NTFS格式…

无人机集群协同搜索研究综述

源自:指挥控制与仿真 作者:刘圣洋, 宋婷, 冯浩龙, 孙玥, 韩飞 注:若出现无法显示完全的情况,可 V 搜索“人工智能技术与咨询”查看完整文章 摘要 无人机集群协同区域搜索能够有效地获取任务区域地面信息,降低环境不确定度。基…

买卖股票的最佳时期含冷冻期(leetcode)

个人主页:Lei宝啊 愿所有美好如期而遇 也就有这样的状态转移方程: 买入:dp[i][0] max(dp[i-1][1] - prices[i], dp[i-1][0]); 可买入:dp[i][1] max(dp[i-1][1], dp[i-1][2]); 冷冻期:dp[i][2] dp[i-1][0] prices…

使用ChatGPT自动生成测试用例思维导图

使用ChatGPT自动生成测试用例思维导图 引言ChatGPT在测试用例编写中的应用全面覆盖测试场景边界测试避免测试用例重复 借助ChatGPT生成测试用例思维导图准备工作步骤一:与ChatGPT对话步骤二:生成思维导图代码 结语 引言 在编写测试用例时,测…

基于Python Django的房价数据分析平台,包括大屏和后台数据管理,有线性、向量机、梯度提升树、bp神经网络等模型

背景 随着城市化进程的加速和房地产市场的快速发展,房价已成为经济学、社会学等多学科交叉研究的热点问题。为了更精确地分析和预测房价,数据分析和机器学习技术被广泛应用。在此背景下,开发一个基于Python Django的房价数据分析平台具有重要…

职业技能大赛引领下物联网专业实训教学的改革研究

随着物联网技术的迅猛发展,作为培养高技能应用型人才的高职院校,面临着将理论与实践深度结合,以满足行业对物联网专业人才新要求的挑战。职业技能大赛作为一种重要的教育评价与促进机制,为物联网专业实训教学的改革提供了新的视角…

面试题004-Java-Java多线程(下)

面试题004-Java-Java多线程(下) 这里写目录标题 面试题004-Java-Java多线程(下)题目自测题目答案1. synchronized 关键字的作用?2. volatile 关键字的作用?3. synchronized 和 volatile 的区别?4. synchronized 和 ReentrantLock 的区别&…

成人高考本科何时报名-深职训学校帮您规划学习之路

你有想过继续深造自己的学历吗?也许你已经工作多年,但总觉得学历是一块心病,想要通过成人高考本科来提升自己。不用着急,今天我们来聊一聊成人高考本科的报名时间,以及深职训学校如何帮助你顺利完成报名。 深圳成人高…

LeetCode-刷题记录-滑动窗口合集(本篇blog会持续更新哦~)

一、滑动窗口概述 滑动窗口(Sliding Window)是一种用于解决数组(或字符串)中子数组(或子串)问题的有效算法。 Sliding Window核心思想: 滑动窗口技术的基本思想是维护一个窗口(一般…

怎样在Python中使用oobabooga的API密钥,通过端口5000获取模型列表的授权

题意: oobabooga-textgen-web-ui how to get authorization to view model list from port 5000 via the oobas api-key in python 怎样在Python中使用oobabooga的API密钥,通过端口5000获取模型列表的授权 问题背景: I wish to extract an…

fastapi+vue3前后端分离开发第一个案例整理

开发思路 1、使用fastapi开发第一个后端接口 2、使用fastapi解决cors跨域的问题。cors跨域是浏览器的问题,只要使用浏览器,不同IP或者不同端口之间通信,就会存在这个问题。前后端分离是两个服务,端口不一样,所以必须要…

PCA和PCoA分析的python代码

主成分分析(PCA)和主坐标分析(PCoA)都是数据降维和可视化的常用方法,但它们在适用场景和计算方法上有一些重要区别。 主成分分析(PCA) 定义: PCA是一种线性降维方法,通过正交变换将原始数据转化为一组线性不相关的变量(主成分)。这些主成分是数据中方差最大的方向。…