Python - 实现自定义异常
Python - Implementing Custom exceptions
我有一个项目需要 运行 并且不知道如何实现自定义异常。它主要做复杂的科学功能,含糊其辞。
大多数情况下,如果未设置某些内容,它会引发异常。我从 运行nables.
那里得到了这个作为开始的例子
# Define a class inherit from an exception type
class CustomError(Exception):
def __init__(self, arg):
# Set some exception infomation
self.msg = arg
try:
# Raise an exception with argument
raise CustomError('This is a CustomError')
except CustomError, arg:
# Catch the custom exception
print 'Error: ', arg.msg
我不知道这是如何工作的,也不知道我将如何实现我的代码。这不是很明确。
了解需要创建的基本异常。
在函数中:
if self.humidities is None:
print "ERROR: Humidities have not been set..."
return
显然这需要 raise/throw 一个例外。
A ValueError
看起来适合您的湿度示例。
if self.humidities is None:
raise ValueError('Humidities value required')
如果你想具体一点:
class HumiditiesError(Exception):
pass
def set_humidities(humidities):
if humidities is None:
raise HumiditiesError('Value required')
try:
set_humidities(None)
except HumiditiesError as e:
print 'Humidities error:', e.message
这定义了一个名为 HumiditiesError
的 Exception
的子 class。默认行为似乎足以满足您的示例,因此 class 的主体为空 (pass
),因为不需要额外或修改的功能。
N.B. Python 2 假设。在 Python 3 中,您将访问 e.args
元组的元素。
我有一个项目需要 运行 并且不知道如何实现自定义异常。它主要做复杂的科学功能,含糊其辞。
大多数情况下,如果未设置某些内容,它会引发异常。我从 运行nables.
那里得到了这个作为开始的例子 # Define a class inherit from an exception type
class CustomError(Exception):
def __init__(self, arg):
# Set some exception infomation
self.msg = arg
try:
# Raise an exception with argument
raise CustomError('This is a CustomError')
except CustomError, arg:
# Catch the custom exception
print 'Error: ', arg.msg
我不知道这是如何工作的,也不知道我将如何实现我的代码。这不是很明确。
了解需要创建的基本异常。
在函数中:
if self.humidities is None:
print "ERROR: Humidities have not been set..."
return
显然这需要 raise/throw 一个例外。
A ValueError
看起来适合您的湿度示例。
if self.humidities is None:
raise ValueError('Humidities value required')
如果你想具体一点:
class HumiditiesError(Exception):
pass
def set_humidities(humidities):
if humidities is None:
raise HumiditiesError('Value required')
try:
set_humidities(None)
except HumiditiesError as e:
print 'Humidities error:', e.message
这定义了一个名为 HumiditiesError
的 Exception
的子 class。默认行为似乎足以满足您的示例,因此 class 的主体为空 (pass
),因为不需要额外或修改的功能。
N.B. Python 2 假设。在 Python 3 中,您将访问 e.args
元组的元素。