在正常情況下,如果函數失敗,例如未在數據庫中找到記錄或者表示可能缺少值的任何其他情況,建議使用異常來處理這種情況?正在使用正常控制流程的例外嗎?
實施例的僞代碼:
function retrieve(foo):
results = db.query("SELECT * FROM bar WHERE foo="+foo)
if not results:
throw Exception("no results")
return results[0]
function main:
try:
record = retrieve(42)
except:
print "no record with 42"
.... will create the record and continue
else:
print "record found: "+record
.... will use the existing record and continue
另一種解決方案可能會返回一個空值,而不是啓動此異常。 哪一個最有可能是反模式?在哪些情況下最好使用例外,哪些不適用?