我的问题似乎很简单,但我没有找到任何关于这个特定问题的帖子。我需要自己的自定义异常类派生自ValueError来打印预期的类型(标准错误消息)以及输入的类型(使用自定义文本)。
class MyOwnException(ValueError):
...
try:
raise MyOwnException ( int('str') ) #not sure what to do here, as I only want to
#raise the exception if incorrect value type
except MyOwnException as e:
print "Error: Expected type", e.expType() #int
print "Error: Entered type", e.entType() #string
添加到上面并通过内置的ValueError引发自定义异常:
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)
我非常赞赏这方面的任何帮助。非常感谢! 干杯,曼努埃尔
答案 0 :(得分:3)
通常情况下,在提出自定义异常时,您必须捕获更通用的异常并重新引发另一个异常。例如,
>>> 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
答案 1 :(得分:1)
int
函数将始终返回ValueError,而不是您的自定义类型。
为了抛出不同的异常,你必须包装int
以捕获ValueError,然后引发你选择的异常(可能包括你想要的失败值)。
答案 2 :(得分:0)
此代码创建一个新的异常类
class MyOwnException(ValueError): pass
然而,没有任何东西会让别人的代码提出异常 - 你只能在你的代码中提出它。