我有两种表达方式。我需要尝试一个表达式,如果它引发异常,请尝试另一个,但如果第二个表达式也引发异常 - 引发异常。
我试过了,但它看起来很丑,我不确定这是解决这个问题的最佳方法:
try:
image = self.images.order_by(func.random()).limit(1)
except:
try:
image = self.images.order_by(func.rand()).limit(1)
except ProgrammingError:
raise ProgrammingError(
'The database engine must be PostgtreSQL or MySQL')
你是怎么做到的?
最佳答案
制作一个单独的函数非常有帮助。
def get_random_image(self):
for rand in func.random, func.rand:
try:
return self.images.order_by(rand()).limit(1)
except ProgrammingError:
pass
raise ProgrammingError('This database engine is not supported')
关于python - 用 `try except` 尝试两个表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11936350/