声明 None 类型异常
Declaring None type exception
我想为继承自异常 class 的 python 中的 NoneType 错误定义自定义异常 class。我希望下面的代码能为我做这样的事情,但没有成功。有什么办法吗?
class NoneTypeException(Exception):
pass
try:
image = cv2.imread("/path/")
gray = cv2.cvtColor(image.copy(), cv2.COLOR_BGR2GRAY) #exception should be raised here
...
except NoneTypeException:
raise NoneTypeException("Image not found") # and should be caught here
我想要 try except 块引发 NoneTypeException。有什么办法吗?
虽然您可以声明 一个异常来表示您想要的任何内容,但现有代码不会为您引发。具体来说,对 None
的操作已经引发了一些定义明确的错误,您无法替换它们。严格来说,您无法获得所需的行为。
如果您知道某段代码容易受到 None
值的影响,您可以捕获通用异常并引发特定异常。这取决于 None
是 只有 您可能会得到的虚假值的假设:
class NoneTypeException(Exception):
pass
try:
image = cv2.imread("/path/")
gray = cv2.cvtColor(image.copy(), cv2.COLOR_BGR2GRAY)
...
except AttributeError as err: # handle generic exception from action on ``None``
raise NoneTypeException("Image not found")
请注意,这很少是您应该做的 - None
值是一种症状,而不是错误的原因。提出一个 FileNotFoundError
.
会更合适
由于 None
可以在任何地方触发错误,因此更容易从源头上防止错误。使用 None
检查身份非常便宜:
try:
image = cv2.imread("/path/")
if image is None: # verify value immediately
raise NoneTypeException()
# safely work with image
gray = cv2.cvtColor(image.copy(), cv2.COLOR_BGR2GRAY)
...
except NoneTypeException:
raise FileNotFoundError('image not found')
我想为继承自异常 class 的 python 中的 NoneType 错误定义自定义异常 class。我希望下面的代码能为我做这样的事情,但没有成功。有什么办法吗?
class NoneTypeException(Exception):
pass
try:
image = cv2.imread("/path/")
gray = cv2.cvtColor(image.copy(), cv2.COLOR_BGR2GRAY) #exception should be raised here
...
except NoneTypeException:
raise NoneTypeException("Image not found") # and should be caught here
我想要 try except 块引发 NoneTypeException。有什么办法吗?
虽然您可以声明 一个异常来表示您想要的任何内容,但现有代码不会为您引发。具体来说,对 None
的操作已经引发了一些定义明确的错误,您无法替换它们。严格来说,您无法获得所需的行为。
如果您知道某段代码容易受到 None
值的影响,您可以捕获通用异常并引发特定异常。这取决于 None
是 只有 您可能会得到的虚假值的假设:
class NoneTypeException(Exception):
pass
try:
image = cv2.imread("/path/")
gray = cv2.cvtColor(image.copy(), cv2.COLOR_BGR2GRAY)
...
except AttributeError as err: # handle generic exception from action on ``None``
raise NoneTypeException("Image not found")
请注意,这很少是您应该做的 - None
值是一种症状,而不是错误的原因。提出一个 FileNotFoundError
.
由于 None
可以在任何地方触发错误,因此更容易从源头上防止错误。使用 None
检查身份非常便宜:
try:
image = cv2.imread("/path/")
if image is None: # verify value immediately
raise NoneTypeException()
# safely work with image
gray = cv2.cvtColor(image.copy(), cv2.COLOR_BGR2GRAY)
...
except NoneTypeException:
raise FileNotFoundError('image not found')