我在龍捲風應用中實現端點,並懷疑如何提升和處理異常。如果發生異常,我應該舉起還是冒泡?
我得到的方法收集所有引發的異常並記錄它們。它看起來像這樣:
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
方法處理。但是,我會失去那些漂亮的信息。
那麼,我應該如此明確地提出例外,還是足以讓事情繼續下去?
我會讓例外泡沫。 –