「コード内で使用する以外の句はできるだけ少なくする必要があります」
例外を除いて、コードを散らかすのは簡単です。
def solve_linear(mat1, mat2):
det1 = determinant(mat1)
det2 = determinant(mat2)
try:
return det1 / det2
except ZeroDivisionError:
raise NoSolution
ZeroDivisionError
ここでは、伝播させるのはおそらく問題ありません。あなたはそれを捕まえる必要はありません。
「あなたが使用するものは通常、常に成功するはずの内部呼び出しになります」
たとえば、ファイルを読み取る、またはキャッシュされた値を返すこのコードを見てください。KeyError
例外にもかかわらず、通常は成功します。
def read_file(path):
try:
return cache[path]
except KeyError:
fp = open(path, 'rb')
data = fp.read()
fp.close()
cache[path] = data
return data
「またはメイン関数のキャッチオール。」
プログラムがインタラクティブである場合は、おそらくトップレベルでほとんどすべてをキャッチしたいと思うでしょう。インタラクティブなコマンドラインプログラムのトップループは次のとおりです。
def main():
while True:
try:
text = raw_input('enter command: ')
cmd = parse_command(text)
except EOFError:
return
except KeyboardInterrupt:
return
except ValueError:
print 'Syntax error'
continue
try:
run_cmd(cmd)
except SystemExit:
raise
except Exception:
traceback.print_exc()