- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这里错过了什么?
import sys
class MyBaseError(BaseException):
def __init__(self, message, base_message=None, *args):
self.message = message
self.base_message = base_message
super(MyBaseError, self).__init__()
def __str__(self):
if self.base_message is None:
return self.message
return self.message + " '" + str(self.base_message) + "'"
class MyError(MyBaseError):
"""
"""
class MyTypeError(MyError):
"""
"""
def run_me():
raise MyTypeError("run_me")
def sayonara():
try:
run_me()
except (MyBaseError) as e:
raise(MyBaseError("unable to run",
e,
e.args),
sys.exc_info()[2])
sayonara()
错误:
Traceback (most recent call last):
File "main.py", line 32, in sayonara
run_me()
File "main.py", line 27, in run_me
raise MyTypeError("run_me")
__main__.MyTypeError: run_me
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "main.py", line 42, in <module>
sayonara()
File "main.py", line 40, in sayonara
sys.exc_info()[2])
TypeError: exceptions must derive from BaseException
MyBaseError 类已经派生自 BaseException。
最佳答案
在您的 sayonara()
函数中,您似乎正试图引发异常元组。问题是 sys.exc_info()[2]
是回溯,而不是异常,这是您中断的原因。我通过将以下行放在异常 block 的顶部来验证这一点:
print(type(sys.exc_info()[2]))
我不确定您要做什么,但是 sayonara()
的工作版本如下:
def sayonara():
try:
run_me()
except (MyBaseError) as e:
raise MyBaseError("unable to run", e, e.args)
如果你想包含回溯,你需要更新你的自定义错误类来处理传递的参数。
关于python - 异常必须派生自 BaseException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62520780/
我在这里错过了什么? import sys class MyBaseError(BaseException): def __init__(self, message, base_message
我正在制作一个自定义插件来查询数据库中的用户信息以帮助客户支持。我的后端是松弛的。 每次我启动 bot 命令时,我都会收到: Computer says nooo. See logs for deta
我正在处理一个项目,该项目涉及连接到远程服务器、等待响应,然后根据该响应执行操作。我们捕获了几个不同的异常,并且根据捕获的异常而表现出不同的行为。例如: def myMethod(address, t
这个错误是什么意思?我正在从 django.shortcuts import render, Http404, HttpResponseRedirect 导入 但是为什么我不能使用 HttpRespo
在执行下面的代码时,如果由于某种原因无法获取 firefox 配置文件/webdriver,我会收到以下错误消息: exceptions must be old-style classes or de
我想创建自己的 Python 异常类,如下所示: class MyException(BaseException): def __init__(self, errno, address):
这两者有什么区别: except: # do something 和 except BaseException as be: print(be) 我的意思是在第一种情况下所有可能的异常
以下是我的代码: test = 'abc' if True: raise test + 'def' 当我运行它时,它给了我 TypeError TypeError: exceptions mu
我知道 Exception 和有什么区别和 BaseException在 Python .我想知道什么是好的做法和更多的 Pythonic: 我的异常是否应该从 BaseException 继承或 E
我正在用线程和钩子(Hook)编写 Python 扩展模块。我需要从我的一个线程向 Python 主线程抛出异常。为此我使用 int PyThreadState_SetAsyncExc(unsigne
在 python 中,每当我们编写用户定义的异常时,我们都必须从类 Exception 扩展它。我的问题是为什么我们不能从 BaseException 扩展它,它是异常层次结构的父类(super cl
根据 python 文档,Exception 派生自 BaseExceptions,我应该将它用于用户定义的异常。所以我有: class VisaIOError(Exception): def
Python 2 documentation说“鼓励程序员从 Exception 类或其子类之一派生新的异常,而不是从 BaseException”。没有进一步解释原因。 我很好奇为什么会这样推荐?是
以下代码有什么问题(在 Python 2.7.1 下): class TestFailed(BaseException): def __new__(self, m): self
当我使用以下用户定义的异常时,我收到一条警告说 BaseException.message 在 Python 2.6 中已被弃用: class MyException(Exception):
当我使用 flask run 从终端运行 Flask 时,如果我的代码有错误,我会看到“TypeError:exceptions must derive from BaseException”而不是实
当我运行此代码时: i=0 while i<5: i=i+1; try: SellSta=client.get_order(symbol=Symb,orderId=Se
最近在 Pytest 中运行我的测试时,我开始在测试结果结束时收到一个奇怪的警告;以下内容的许多多次迭代: Exception ignored in: . at 0x10eea07a0> Traceb
我正在尝试测试与 Amazon Forecast 服务交互的代码块,它看起来与 https://github.com/aws-samples/amazon-forecast-samples/blob/
所以今天这让我困惑了太久。我把它扔给你们。 我得到了 TypeError: exceptions must be old-style classes or derived from BaseExcep
我是一名优秀的程序员,十分优秀!