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

茶山做网站2345网址导航是什么浏览器

茶山做网站,2345网址导航是什么浏览器,南昌做网站kaiu,建网站 多少钱目录 1 异常处理基础概念 1.1 什么是异常? 1.2 异常与错误的区别 2 异常处理基础 2.1 常见内置异常类型 2.2 try-except 基本结构 2.3 捕获多个异常 2.4 抛出异常 2.4.1 使用raise语句 2.4.2 自定义异常类 3 高级异常处理技巧 3.1 不要过度捕…

目录

1  异常处理基础概念

1.1 什么是异常?

1.2 异常与错误的区别

2  异常处理基础

2.1  常见内置异常类型

2.2  try-except 基本结构

2.3  捕获多个异常 

2.4  抛出异常

2.4.1  使用raise语句

2.4.2  自定义异常类

3  高级异常处理技巧

3.1  不要过度捕获异常

3.2  使用上下文管理器(with语句)

3.3  记录异常信息 

3.4  异常链(Exception Chaining)

3.5  异常处理装饰器


1  异常处理基础概念

1.1 什么是异常?

        异常处理是Python编程中至关重要的部分,它帮助我们优雅地处理程序运行时可能出现的错误情况

        在Python中,异常是指程序执行过程中发生的意外情况,它会中断正常的程序流程。当Python遇到无法正常处理的情况时,会抛出(raise)一个异常。

# 基本异常示例
try:result = 10 / 0  # 这会引发ZeroDivisionError
except ZeroDivisionError:print("不能除以零!")

1.2 异常与错误的区别

  • 语法错误(Syntax Error):代码不符合Python语法规则,程序无法运行

  • 异常(Exception):程序运行时发生的意外情况,可以被捕获和处理


2  异常处理基础

2.1  常见内置异常类型

异常类型触发场景
SyntaxError语法错误
IndentationError缩进错误
NameError访问未定义变量
TypeError类型操作不当
ValueError值无效或不合法
IndexError序列索引超出范围
KeyError字典键不存在
AttributeError对象没有该属性
IOError/OSError输入/输出操作失败
ImportError导入模块失败
ZeroDivisionError除数为零
FileNotFoundError文件不存在

2.2  try-except 基本结构

try:# 可能引发异常的代码result = 10 / 0
except ZeroDivisionError:# 处理特定异常print("不能除以零!")
except (TypeError, ValueError) as e:# 处理多种异常print(f"类型或值错误: {e}")
except Exception as e:# 捕获所有其他异常print(f"发生未知错误: {e}")
else:# 没有异常发生时执行print("一切正常!")
finally:# 无论是否发生异常都会执行print("清理工作完成")

2.3  捕获多个异常 

try:# 可能引发多种异常的代码data = {"key": "value"}print(data["missing_key"])  # 可能引发KeyErrorprint(10 / 0)              # 可能引发ZeroDivisionError
except (KeyError, ZeroDivisionError) as e:print(f"捕获到异常: {type(e).__name__}")

2.4  抛出异常

2.4.1  使用raise语句

def validate_age(age):if age < 0:raise ValueError("年龄不能为负数")if age > 120:raise ValueError("年龄不合理")try:validate_age(-5)
except ValueError as e:print(f"验证失败: {e}")

2.4.2  自定义异常类

示例1:

class InvalidEmailError(Exception):"""自定义异常类表示无效邮箱"""def __init__(self, email, message="无效的邮箱地址"):self.email = emailself.message = messagesuper().__init__(f"{message}: {email}")def send_email(email):if "@" not in email:raise InvalidEmailError(email)try:send_email("invalid.email")
except InvalidEmailError as e:print(e)

 示例2:

class MyCustomError(Exception):"""自定义异常类"""def __init__(self, message, code):super().__init__(message)self.code = codedef validate_age(age):if age < 0:raise MyCustomError("年龄不能为负数", 400)elif age > 120:raise MyCustomError("年龄不现实", 400)try:validate_age(-5)
except MyCustomError as e:print(f"错误代码 {e.code}: {e}")

3  高级异常处理技巧

3.1  不要过度捕获异常

# 不好的做法 - 捕获过于宽泛的异常
try:do_something()
except:pass# 好的做法 - 只捕获预期的异常
try:do_something()
except ExpectedError:handle_error()

3.2  使用上下文管理器(with语句)

# 自动处理资源释放
try:with open("data.txt", "r") as f:content = f.read()
except IOError as e:print(f"文件操作失败: {e}")

3.3  记录异常信息 

import logging
logging.basicConfig(filename="app.log", level=logging.ERROR)def critical_operation():try:1 / 0except Exception as e:logging.exception("操作失败")  # 记录完整堆栈跟踪raise  # 重新抛出异常try:critical_operation()
except Exception:print("操作失败,请查看日志")

3.4  异常链(Exception Chaining)

try:# 原始异常raise ValueError("原始错误")
except ValueError as ve:try:# 处理时引发新异常raise RuntimeError("处理错误") from veexcept RuntimeError as re:print(f"当前异常: {re}")print(f"原始异常: {re.__cause__}")

3.5  异常处理装饰器

from functools import wrapsdef handle_errors(logger):"""异常处理装饰器工厂"""def decorator(func):@wraps(func)def wrapper(*args, **kwargs):try:return func(*args, **kwargs)except Exception as e:logger.error(f"{func.__name__} 失败: {e}")raisereturn wrapperreturn decorator# 使用装饰器
import logging
logger = logging.getLogger(__name__)@handle_errors(logger)
def risky_operation():"""可能失败的操作"""raise ValueError("出错了!")try:risky_operation()
except ValueError:print("操作失败已处理")

注意,良好的异常处理策略应该:

  1. 只捕获能处理的异常

  2. 保留原始异常信息

  3. 提供有意义的错误消息

  4. 适当记录错误日志

  5. 在适当的时候重新抛出异常

如果您觉得本文章对您有帮助,别忘了点赞、收藏加关注,更多干货内容将持续发布,您的支持就是作者更新最大的动力。本专栏将持续更新,有任何问题都可以在评论区讨论

http://www.dtcms.com/wzjs/225617.html

相关文章:

  • 网页设计作品集图片亚马逊seo是什么意思
  • 使用wget对网站做镜像企业网络营销推广方法
  • 保定网站制作报价抖音seo排名软件哪个好
  • 最好的品牌设计网站建设旺道营销软件
  • 建立网站有哪几种方式热狗seo顾问
  • 做公司的宣传网站需要注意什么百度搜索榜
  • 移动开发网站开发区别百度营销客户端
  • 莆田网站建设电话推荐一个seo优化软件
  • 兰州市最新通知北京seo代理公司
  • 云服务器ecs 搭建网站友情链接模板
  • 设计本官方网站 网络服务推广普通话手抄报内容
  • 深圳网站建设深圳网络公司智能网站排名优化
  • 没有网站做APP微信营销方法
  • dede织梦做的网站 栏目页有切换js 怎么循环子栏目 调子栏目推广优化方案
  • 怎样把自己做的网站发布如何建立个人网站的步骤
  • 国外网建站宁波专业seo外包
  • 企业做网站公司排名网站建设公司
  • 杭州网站建设索q.479185700百度软文推广怎么做
  • 网站的公告栏怎么做二级不死域名购买
  • 优秀北京网站建设网站推广软文
  • 为知笔记如何导入wordpress福州关键词排名优化
  • 网站开发公司 杭州恶意点击软件哪几种
  • 靠谱网站建设公司价格多少seo关键词选择及优化
  • 一个ip做几个网站吗爱站网 关键词挖掘工具
  • 武汉做商城网站建设软件开发工资一般多少
  • 网站右下角弹出广告代码百度网盘官网网页版
  • 吉利的广告公司名字seo经典案例分析
  • 安徽网站建设SEO优化制作设计公司普通话手抄报简单又漂亮
  • 做网站怎么选择服务器百度一下百度主页度
  • 网站建设 提成多少百度竞价开户多少钱