我正在开发一个来自科学背景的Pyside / Qt应用程序。 Pyside中try / catch错误的最佳实践是什么?例如,有几个QCheckBox,如果没有选中任何一个框,处理错误的最佳方法是什么?
由于
编辑:感谢您的评论。我正在寻找一些关于在考虑用户输入时代码中最佳方法的建议。一个例子: if self.main_frame.LRadioButton.isChecked():
if self.main_frame.RadioButton2.isChecked():
print 'clicked'
else:
print 'no button selected!'
elif self.main_frame.TRadioButton.isChecked():
if self.main_frame.RadioButton3.isChecked():
print 'clicked'
else:
print 'No button selected!'
else:
print 'no button selected, top level'
因此,如果没有选择程序给出的至少一种可能性,用户可能会尝试进一步操作。如何处理“无按钮选择”部件?抛出异常?手动捕捉所有事件?
希望现在很清楚。
再次感谢!
答案 0 :(得分:1)
假设我理解你的问题......
通常,抛出异常不是一个好主意,因为用户没有选中右侧框。例如,更好的做法是弹出一个消息框,要求用户重新输入信息。这意味着查看输入的内容并检查其是否有效(根据您应用的规则)。但是,当涉及异常时,python相当强大。 nan不会导致崩溃和烧毁,它只会导致抛出异常,将打印回溯并且控制将返回到您的应用程序。
简而言之,不要因为用户输入错误而抛出异常。而是检查输入并适当地响应它。 E.g:
while denominator == 0:
QMessageBox('Invalid values (probably denominator). Please re-enter')
result = numerator / denominator
请注意,如果检查异常太复杂,捕获异常可能是最简单的方法:
while not can_continue:
try:
result = complex_maths_involving_division(a, b, c)
except ZeroDivisionError:
QMessageBox('Invalid values resulting in zero division. Please re-enter')
else:
can_continue = True