python3 使用自定义属性重新引发异常?

2023-12-19

这是我需要移植的 python2 代码:

try:
  do_something_with_file(filename)

except:
  exc_type, exc_inst, tb = sys.exc_info()
  exc_inst.filename = filename
  raise exc_type, exc_inst, tb

使用上面的代码,我可以通过检查异常是否具有“文件名”属性来获取有问题的输入文件的整个异常。

然而python3的加注已经改变了。这是 2to3 为我提供的上述代码:

except Exception as e:
  et, ei, tb = sys.exc_info()
  e.filename = filename
  raise et(e).with_traceback(tb)

这给了我另一个错误,我不认为文件名属性被保留:

in __call__
    raise et(e).with_traceback(tb)
TypeError: function takes exactly 5 arguments (1 given)

我只想透明地传递异常以及一些信息来跟踪输入文件。我想念 python2raise [exception_type[,exception_instance[,traceback]]]- 我怎样才能在 python3 中做到这一点?


您可以设置__traceback__属性:

except Exception as e:
    et, ei, tb = sys.exc_info()
    ei.filename = filename
    ei.__traceback__ = tb
    raise ei

or call .with_traceback()直接在旧实例上:

except Exception as e:
    et, ei, tb = sys.exc_info()
    ei.filename = filename
    raise ei.with_traceback(tb)

However,回溯已经自动附加,不需要重新附加它,真的。

See the raise声明文件 http://docs.python.org/3/reference/simple_stmts.html#the-raise-statement:

当引发异常时,通常会自动创建回溯对象并将其作为__traceback__属性,可写。

在这种特定情况下,也许您想要一个不同的异常,并带有上下文?

class FilenameException(Exception):
    filename = None
    def __init__(self, filename):
        super().__init__(filename)
        self.filename = filename

try:
    something(filename)
except Exception as e:
    raise FilenameException(filename) from e

这将创建一个链式异常,如果未捕获,则将打印两个异常,并且原始异常可用作newexception.__context__.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3 使用自定义属性重新引发异常? 的相关文章

  • 如何在 __init__ 中使用await设置类属性

    我如何定义一个类await在构造函数或类体中 例如我想要的 import asyncio some code class Foo object async def init self settings self settings setti
  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • 在 Celery 任务中调用 Google Cloud API 永远不会返回

    我正在尝试拨打外部电话Google Cloud Natural Language API从一个内Celery任务 使用google cloud python包裹 问题是对 API 的调用永远不会返回 挂起 celery task def g
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Django Rest Framework 是否有第三方应用程序来自动生成 swagger.yaml 文件?

    我有大量的 API 端点编写在django rest framework并且不断增加和更新 如何创建和维护最新的 API 文档 我当前的版本是 Create swagger yaml文件并以某种方式在每次端点更改时自动生成 然后使用此文件作
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • PyQt 使用 ctrl+Enter 触发按钮

    我正在尝试在我的应用程序中触发 确定 按钮 我当前尝试的代码是这样的 self okPushButton setShortcut ctrl Enter 然而 它不起作用 这是有道理的 我尝试查找一些按键序列here http ftp ics
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • 根据 Pandas 中的列表选择数据框行的子集

    我有一个数据框df1并列出x In 22 import pandas as pd In 23 df1 pd DataFrame C range 5 B range 10 20 2 A list abcde In 24 df1 Out 24
  • 如何使用 PrimaryKeyRelatedField 更新多对多关系上的类别

    Django Rest 框架有一个主键相关字段 http www django rest framework org api guide relations primarykeyrelatedfield其中列出了我的 IDmany to m
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv

随机推荐

  • 如何将数组列表中的特定项目移动到第一项

    例如 一个列表 A B C D E 给定 C 切换到 甲乙二胺 请注意 数组大小会发生变化 某些项目可能会在运行时删除 Collections swap url url indexOf itemToMove 0 该语句不起作用 因为它输出
  • ios 7 dequeueReusableCellWithIdentifier:forIndexPath 方法 - 是否需要 registerClass 方法

    我使用的是ios 7 快问 我有一个工作程序 它使用 dequeueReusableCellWithIdentifier forIndexPath 来显示具有两个不同原型的单元格 我从未使用过 UITableView registerCla
  • 如何在 JPA 实体管理器中锁定整个实体(表)

    我有一个表 从中计算两个日期之间的当前行数 并在同一个表中的 要插入 行中使用结果值 当两个并发请求 例如 A1 和 A2 到来 并且想要同时存储新行 在上面的计算之后 时 我遇到了问题 两者都有相同的结果 例如 10 行 即使A1应该有1
  • Java Properties 对象到 String

    我有一个JavaProperties我从内存中加载的对象String 之前从实际加载到内存中 properties像这样的文件 this propertyFilesCache put file FileUtils fileToString
  • 如何从子目录运行多个 GitHub Actions 工作流程

    我有3个目录 github workflows linters 功能测试 单元测试 在每个目录中我都有多个工作流程 yml文件例如在linters codeQuality yml 我的问题是 当发出拉取请求时 仅执行根目录中的工作流程文件
  • RJS:如何获取 DOM 元素的值和innerHTML

    我想将 DOM 元素的值和 insideHTML 源分配给本地 ruby 变量 然而 在我的方法中似乎我无法利用RJS来完成这个功能 我不知道哪个方法可以实现它 总而言之就是 将js变量值赋给ruby局部变量 怎么做 有限的情况是 page
  • 如何确保 ckeditor 在 jquery-ui 对话框小部件内显示时具有焦点

    我用过CKEDITOR appendTo my div null my string 创建 ckeditor 的实例 没问题 但是 LINK 按钮会打开一个非交互式 LINK 对话框 那么 是否有一些配置设置应该手动设置为 true EDI
  • 在 x 次页面浏览量后运行 JavaScript [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想在用户访问我的网站一定时间或达到一定数量的页面浏览量后显示营销弹出窗口 例如 我希望它在用户浏览完 3 个页面后弹出 我如何使用 Ja
  • PHPEXCEL如何获取单元格值,即使有特殊字符

    当我使用函数 getValue 获取单元格值时 如果单元格包含特殊字符 它会返回 false 是否有任何解决方案来获取内容 即使包含非 UTF 8 字符 我希望在调用 getValue 函数之前解析它们 我将不胜感激任何形式的帮助 objP
  • Java 中的静态/实例初始化程序块按什么顺序运行?

    假设一个项目包含多个类 每个类都有一个静态初始化块 这些块按什么顺序运行 我知道在一个类中 这些块按照它们在代码中出现的顺序运行 我读到它在各个类中都是相同的 但我编写的一些示例代码与此不同 我使用了这段代码 package pkg pub
  • 无法使用 Jquery.post() 发布 JSON 对象

    我在我的 javascript 应用程序中创建了以下对象 poll data active question question div question wrap textarea attr value answers div answer
  • 如何从 iPhone 应用程序中将用户引导至 iPhone 设置主屏幕

    我目前有一个应用程序要求用户维护 VPN 隧道 加载时我检查 VPN 隧道是否可用 我想知道是否有任何方法可以显示UIAlertView单击 确定 后 用户将进入 iPhone 主设置屏幕 以便他们可以打开 VPN 我知道如何存储应用程序特
  • Laravel 4 - 在其他控制器中使用控制器操作?

    好吧 我有一些控制器正在执行我的工作 现在我创建了更多控制器 在新控制器中的某个操作中间 我只记得我已经在旧控制器中编写了正确的代码 所以对于例如在 oldController handyAction 中 some good codez 并
  • SQLite数据库android创建表

    我收到错误 没有这样的表 导致我尝试一切可能让它消失 现在它消失了 但我很困惑 这是我的情况 我需要在应用程序中创建 2 个表 我在每张桌子上放置一个类 它看起来像下面的代码 如果我按照这个操作 当我从 Table2 中提取数据时 它会告诉
  • as3 - 从资产类获取库符号

    我创建了一个 asset swf 我想在其中保留所有符号 然后 我创建了一个执行嵌入的 Assets 类 它看起来像这样 public class Assets extends MovieClip Embed source assets s
  • 在 React 中上传之前获取图像预览

    这里有很多这样的例子 但似乎找不到任何反应 我已经成功地将 vanilla js 转换为 React 但得到an error https stackoverflow com questions 32508191 uncaught typee
  • 如何从 iPhone 中的另一个应用程序运行一个应用程序?

    在某些应用程序上 我看到当一个链接被触摸时 使用 safari 打开链接并从当前应用程序退出 我想使用此功能从其他应用程序运行消息应用程序 我可以这样做吗 如果是的话 怎么办 您需要使用 UIApplication openURL 例如 您
  • 加载 ContextLoaderListener 时出现 ClassNotFoundException

    我正在开发一个网络应用程序 使用 spring 3 0 hibernate 当我尝试在 WAS 7 0 上部署应用程序时 出现错误 无法加载侦听器 org springframework web context ContextLoaderL
  • Actions-on-Google 无法获取 Dialogflow SDK 上的 UPDATES_USER_ID

    我正在设置一个使用推送通知的操作 然而 在 firebase 上我无法保存用户的 UPDATES USER ID 它返回 未定义 我按照指南进行操作link https developers google com actions assis
  • python3 使用自定义属性重新引发异常?

    这是我需要移植的 python2 代码 try do something with file filename except exc type exc inst tb sys exc info exc inst filename filen