我正在龙卷风应用程序中实现端点,并怀疑如何引发和处理异常。
我有get方法收集所有引发的异常并记录它们。它看起来像这样:
def get(self):
try:
req = self.get_request_params()
except Exception as e:
self.send_json(status_code=400, status_text=str(e))
logging.exception(str(e))
这里是get_request_params
可能会引发异常:
def get_request_params(self):
try:
user_id = UUID(self.get_query_argument("user_id", None))
except ValueError:
raise ValueError("Incorrect argument value for user_id = %s" % user_id)
try:
from_date = self.get_query_argument("from", default=None)
datetime.datetime.strptime(from_date, '%Y-%m-%d')
except ValueError:
raise ValueError("Incorrect argument value for from_date = %s, should be YYYY-MM-DD" % from_date)
...
还有其他请求参数,以相同的方式检查。看起来我正在努力做更多的事情。而不是它我可以有这样的东西:
def get_request_params(self):
user_id = UUID(self.get_query_argument("user_id", None))
from_date = self.get_query_argument("from", default=None)
datetime.datetime.strptime(from_date, '%Y-%m-%d')
...
在这种情况下,任何异常都会冒出来并将以get
方法处理。但是,我会丢失那些漂亮的信息。
那么,我是否应该如此明确地提出例外情况,或者它是否足以允许事情按原样进行?
答案 0 :(得分:1)
如果你遇到异常,这意味着你打算对它进行某些事情,即使这些东西只是输出一个自定义日志消息而忽略它或重新提升它。如果您所做的仅事情是重新提升它,那么您首先应该抓住它。 (此可能表示您捕获的错误类别过于宽泛。)