Python:从ValueError派生的自定义异常类
我的问题似乎很简单,但我没有找到任何关于这个问题的帖子。我需要从ValueError派生自己的自定义异常类来打印预期的类型(标准错误消息)以及输入的类型(带有自定义文本) 要添加到上述内容并通过内置ValueError引发自定义异常,请执行以下操作:Python:从ValueError派生的自定义异常类,python,Python,我的问题似乎很简单,但我没有找到任何关于这个问题的帖子。我需要从ValueError派生自己的自定义异常类来打印预期的类型(标准错误消息)以及输入的类型(带有自定义文本) 要添加到上述内容并通过内置ValueError引发自定义异常,请执行以下操作: class MyOwnException(ValueError): def __init__(self, value): self.value = value print "Error: Expected type", type(s
class MyOwnException(ValueError):
def __init__(self, value):
self.value = value
print "Error: Expected type", type(self.value) #int
print "Error type", self.value #how to return expected value type?
try:
int('str')
except ValueError as e:
raise MyOwnException(e)
我非常感谢在这方面的任何帮助。非常感谢!
干杯,Manuel函数将始终返回ValueError,而不是您的自定义类型
为了抛出不同的异常,您必须包装
int
以捕获ValueError,然后引发您选择的异常(可以根据需要包含失败的值)。此代码创建一个新的异常类
class MyOwnException(ValueError): pass
但是,没有任何东西会让其他人的代码引发您的异常-您只能在自己的代码中引发它。通常情况下,在引发自定义异常时,您必须捕获一个更通用的异常并重新引发另一个异常。那么比如说,
>>> class MoofiError(ValueError):
... pass
...
>>> try:
... int('a')
... except ValueError:
... raise MoofiError, 'you did something wrong, fool'
...
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
__main__.MoofiError: you did something wrong, fool
>类MoofiError(ValueError):
... 通过
...
>>>尝试:
... int('a')
... 除值错误外:
... “你做错了什么,傻瓜”
...
回溯(最近一次呼叫最后一次):
文件“”,第4行,在
__莫菲罗:你做错了什么,傻瓜
谁将提出错误?您的示例不起作用,因为int是一个内置类,不知道您的自定义异常。异常并不是自动发生的,每个异常都是由于有意识的决定而“手动”引发的。这甚至于事无补int
可以很好地接受字符串。没有“预期”类型,因为python不是静态语言int('5')
很好,非常感谢!然而,你怎么能只显示你的自定义错误消息,这意味着你在主菜单第4行输入了回溯(最近一次调用):文件“”。Moofieror:你做错了什么,傻瓜谢谢@user1233923,如果您想引发异常,没有简单的方法。可能会有一些丑陋的黑客行为,但这不值得。你为什么提出这个例外?您正在尝试处理这里的用户错误吗?还是程序员错误?如果您正在处理程序员错误,您不想取消回溯。如果您正在处理用户错误,我认为您根本不想使用异常。基本问题:对异常进行子分类有什么帮助。它是否更改了命名空间。。。还是签名@nish如果不创建特定的异常类型,如何捕获特定的异常类型?
>>> class MoofiError(ValueError):
... pass
...
>>> try:
... int('a')
... except ValueError:
... raise MoofiError, 'you did something wrong, fool'
...
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
__main__.MoofiError: you did something wrong, fool