实现Python异常

2024-02-19

我在程序中实现异常系统时遇到一些问题。 我在某处发现了以下一段代码,我试图将其用于我的程序:

class InvalidProgramStateException(Exception):
    def __init__(self, expr, msg):
        self.expr = expr
        self.msg = msg

我认为 msg 必须是要显示的字符串消息,但是当我想引发此异常时,如何填写“expr”?我必须手写吗?

raise InvalidProgramStateException(what_here?, "there was an error")

您的自定义异常实际上根本不需要采用参数。如果您没有任何特定的错误消息或状态要封装在异常中,那么这将很好地工作:

class MyException(Exception):
    pass

这将允许您的程序按类型捕获此异常的情况:

try:
    raise MyException()
except MyException:
    print "Doing something with MyException"
except:
    print "Some other error occurred... handling it differently"

如果您希望 Exception 具有一些有意义的字符串表示形式,或者具有可以为您的应用程序提供有关错误原因的更多详细信息的属性,那么您可以将其他参数传递给构造函数。这些参数的数量、名称和类型并不是由 Python 预先定义的……它们可以是任何东西。请务必提供自定义__str__ or __unicode__方法,以便您可以提供有意义的文本描述:

class MyException(Exception):

    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return "MyException with %s" % self.msg

在您引用的示例中,expr and msg参数特定于示例的虚构情况。关于如何使用这些的一个人为场景是:

def do_something(expr):
    if 'foo' in expr:
        raise InvalidProgramStateException(expr, "We don't allow foos here")
    return 5

user_input = 'foo bar'
try:
    do_something(user_input)
except InvalidProgramStateException, e:
    print "%s (using expression %s)" % (e.msg, e.expr)

由于您的应用程序似乎不需要它,因此只需删除不需要的参数即可。

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

实现Python异常 的相关文章

  • python中热图的层次聚类

    我有一个 NxM 矩阵 其值范围为 0 到 20 我可以使用 Matplotlib 和 pcolor 轻松获得热图 现在我想使用 scipy 应用层次聚类和树状图 我想重新排序每个维度 行和列 以显示哪些元素相似 根据聚类结果 如果矩阵是方
  • ValueError:“连接”层需要具有匹配形状的输入(连接轴除外)

    我正在尝试为我的项目构建 Pix2Pix 并收到错误 值错误 Concatenate层需要具有匹配形状的输入 除了连接轴之外 获得输入形状 None 64 64 128 None 63 63 128 生成器是一个 U 网模型 我的输入高度
  • 美丽的汤从谷歌搜索中提取href

    谷歌搜索给出了以下 HTML 的第一个结果 h3 class r a href https rads stackoverflow com amzn click com 0470284889 class l vst em Quantitati
  • Pyenv 无法在 Cygwin 上安装 python: ModuleNotFoundError: No module named '_ctypes'

    我正在尝试设置 Cygwin 环境以使用 pyenv 来管理 python 版本 我没有管理员权限 所以我使用以下命令运行设置 no admin flag 我使用 Cygwin 包管理器应用程序解决了一些依赖关系 但我被困在了这一点上 Mo
  • 使用信号时出现 django TransactionManagementError

    我有一个与 django 的用户和 UserInfo 一对一的字段 我想订阅用户模型上的 post save 回调函数 以便我也可以保存 UserInfo receiver post save sender User def saveUse
  • 有条件填写 pandas 数据框

    我有一个数据框df列中包含浮点值A 我想添加另一列B这样 B 0 A 0 for i gt 0 B i if np isnan A i then A i else Step3 B i if abs B i 1 A i B i 1 lt 0
  • Django 如何从 ManyToManyField 序列化并列出全部

    我正在使用 Django 1 9 1 开发移动应用程序后端 我实现了关注者模型 现在我想列出用户的所有关注者 但目前我不得不这样做 我还使用 Django Rest 框架 这是我的 UserProfile 模型 class UserProf
  • 十六进制数的按位异或

    我们如何在 Python 中对十六进制数进行异或 例如 我想要异或 ABCD and 12EF 答案应该是 B922 我使用了下面的代码 但它给出了错误的结果 xor two strings of different lengths def
  • 理解@property装饰器和继承[重复]

    这个问题在这里已经有答案了 这里是 Python 3 以防万一它很重要 我试图正确理解如何实现继承 property使用 我已经搜索了 StackOverflow 并阅读了大约 20 个类似的问题 但无济于事 因为他们试图解决的问题略有不同
  • Pyinstaller --onefile 警告文件已存在但不应存在

    跑步时Pyinstaller onefile 并开始得到结果 exe 会出现多个弹出窗口 并显示以下警告 WARNING file already exists but should not C Users myuser AppData L
  • InvalidArgumentException:消息:无效参数:“using”必须是字符串

    我对 python 很陌生 试图创建可重用的代码 当我尝试通过传递 Login 类下使用的所有参数来调用 test main py 中的 Login 类和函数 login user 时 我收到错误 InvalidArgumentExcept
  • Python 垃圾收集有时在 Jupyter Notebook 中不起作用

    我的一些 Jupyter 笔记本经常出现 RAM 不足的情况 而且我似乎无法释放不再需要的内存 这是一个例子 import gc thing Thing result thing do something thing None gc col
  • python中打印字符串的长度

    有没有什么方法可以找到 即使是最好的猜测 Python中字符串的 打印 长度 例如 potaa bto 是 8 个字符len但 tty 上只打印 6 个字符宽 预期用途 s potato x1b 01 32mpotato x1b 0 0mp
  • 如何使用数据库在 Django 中的应用程序之间交换数据?

    我正在使用 Django 在网络上工作 我创建了 2 个应用程序 第一个用于客户端注册并将其数据添加到数据库 第二个应用程序供用户访问和查看交互界面 这个想法是使用第二个应用程序从数据库中的客户端获取数据 并使用它向用户显示一些信息 我的问
  • 使用 Flask-SQLAlchemy 进行多对多多数据库连接

    我正在尝试使这个多对多联接与 Flask SQLAlchemy 和两个 MySQL 数据库一起工作 并且它非常接近 只是它为联接表使用了错误的数据库 这是基础知识 我有main db and vendor db 表格设置为main db u
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • psutil:测量特定进程的CPU使用率

    我正在尝试测量进程树的 cpu 使用率 目前获取进程 没有子进程 的 cpu usage 就可以了 但我得到了奇怪的结果 import psutil p psutil Process PID p cpu percent 还给我float g
  • 如何让你的精灵在pygame中跳跃

    目前我已经制作了一个平台游戏 可以左右移动我的角色 他从地上开始 关于如何让他跳的任何想法 因为我不明白 目前 如果我按住向上键 我的玩家精灵将连续向上移动 或者如果我按下它 我的玩家精灵将向上移动并保持向上 我想找个办法远离他 让我重新跌
  • 使 matplotlib 图形默认看起来像 R?

    Is there a way to make matplotlib behave identically to R or almost like R in terms of plotting defaults For example R t
  • 如何使用 Python 将我的 GoPro Hero 4 相机直播连接到 openCV?

    我在尝试从我的新 GoPro Hero 4 相机捕获实时流并使用 openCV 对其进行一些图像处理时遇到麻烦 这是我的试用 创建的窗口上没有显示任何内容 import cv2 import argparse import time imp

随机推荐

  • ng-repeat 排序在 jQuery 中抛出异常

    我有一个表 其中包含由 ng repeat 创建的行 表头有一个 ng click 用于设置排序谓词 该函数还确定方向 asc desc 排序工作正常 但由于某种原因 每次更改谓词并且排序触发时 我都会收到 jQuery 的异常 这是我正在
  • 从 SFSpeechRecognizer 获取语音幅度

    我正在使用这个库https github com appcoda SpeechToTextDemo https github com appcoda SpeechToTextDemo将语音转录为文本 我想要真实的语音幅度来显示这个库的语音图
  • iOS 9 点播资源可以永久保留吗?

    根据文档 iOS 9 通过 NSBundleResourceRequest 下载的按需资源仅保留到endAccessingResources被调用 并且被自动调用当资源请求对象被释放时 好的 但是当应用程序终止时 一切被解除分配 那么这是否
  • 在 GitHub 上拥有公共存储库的私有分支吗?

    我在 GitHub 存储库中有一个公共 PHP 项目 其中仅包含一个分支 主分支 我想要一个对我来说是私有的单独分支 分支 我已经为私有 GitHub 存储库付费 我希望能够将私人分支 分叉的更改合并到公共存储库 反之亦然 考虑到这一点 我
  • 在delphi 2009中创建gif动画文件?

    gif TgifImage Create gif Width 100 gif Height 100 gif AnimationSpeed 500 gif Animate true gif add image1 Picture Bitmap
  • Laravel:PDO异常,即使安装并测试了驱动程序也找不到驱动程序[重复]

    这个问题在这里已经有答案了 我正在开发一个 Laravel 5 1 项目 该项目必须连接到现有的 MS SQL Server 数据库 我的项目当前位于使用 Apache 2 4 18 的 Ubuntu 16 04 LTS 服务器上 我已在计
  • 什么时候发送HTTP状态码?

    目前 在我的 PHP 脚本中 当用户尝试访问不存在或不属于该用户的内容时 我会将用户重定向到自定义 404 未找到错误页面 就像这样 header Location http www mydomain com error notfound
  • 文件引用与文件?

    我想制作一个 Flash 应用程序 用户可以在其中从本地硬盘驱动器加载文件并将文件保存到本地硬盘驱动器 虽然我经常在 AIR 应用程序中使用File and FileStream类 我以前没有在 SWF 中这样做过 据我所知FileRefe
  • 使用“get”来访问地图有什么好处

    从这个问题跟进 按关键字进行惯用的 clojure 映射查找 https stackoverflow com questions 7034803 idiomatic clojure map lookup by keyword 使用 cloj
  • Spring Rest 和 jQuery Ajax 文件下载

    我目前正在使用 jQuery 和 Spring Rest jQuery 用于向服务器上传和下载文件 上传过程工作正常 但下载文件时没有什么问题 所以场景是 在视图中 用户将选择n个要下载的文件并单击下载按钮 一旦用户单击该按钮 文件就会被下
  • angular.js 选择输入框的过滤类型

    我使用 angular js 的时间很短 有时我有一种感觉 我对 html 和 javascript 一无所知 因为 Angular 在遇到我想象中应该的东西时 可能非常简单 这是我头痛的地方 我的电流控制器scope persons是工厂
  • 为动态加载的新元素添加tinymce

    我的页面包含 5 个 div 可以通过 Tinymce 内联编辑器进行编辑 我可以通过单击按钮 如此动态 来轻松地使用 Jquery 加载 5 个新的 但当然 新的 div 不会受到 Tinymce 的影响 因为 init 已经加载了 我怎
  • 如何在 wpf 中将 List 转换为 ObservableCollection

    我在 wpf 中 有一个通用列表 List 现在我希望将其转换为通用的可观察集合 ObservableCollection 我知道我可以迭代列表并将每个单独的项目添加到 Observable 集合中 然而 在我看来 必须有一种内置的方法来做
  • 如何自定义 JAXB 生成复数方法名称的方式?

    我们使用 JAXB 生成 Java 类 遇到了一些生成的复数方法名称不正确的情况 例如 我们期望的地方getPhysicians我们正在得到getPhysicien 我们如何自定义 JAXB 复数特定方法的方式 架构
  • 如何在SQL Server 2012中解析json数据?

    我正在使用 SQL Server 2012 我被分配了一项任务 其中我的专栏之一 JsonText 的表Sample包含 json 数据 我想通过解析该数据并将其插入到另一个表的列中 Test 我在网上搜索 openjson 在 SQL S
  • Google 地图 API 多个标记

    我正在使用以下代码来显示谷歌地图 并在地图上创建一个标记 它运作良好 我只需要在同一张地图上放置多个标记即可
  • Onclick 事件删除文本输入字段中的默认值

    我有一个输入字段
  • 强制客户端或服务器重新启动 SSL 握手(或使 SSL 会话过期)

    我有一个客户端 用 Java 编写 连接到 HTTPS 服务器 该服务器也是用 Java 编写的 客户端证书和可信证书存储在 PKI 令牌中 客户端不断地向服务器发送一些HTTP请求 一切都很好 现在我想强制客户端 或服务器 重新启动握手
  • Sublime Text 2控制台输入[重复]

    这个问题在这里已经有答案了 我使用 Sublime Text 2 但当我的代码要求用户输入时 它不会让我输入任何值 换句话说 input 在Python和gets在 Ruby 中无法正确提示我输入 Python 抛出一个EOFError错误
  • 实现Python异常

    我在程序中实现异常系统时遇到一些问题 我在某处发现了以下一段代码 我试图将其用于我的程序 class InvalidProgramStateException Exception def init self expr msg self ex