try:
recursive_function()
except RuntimeError e:
# is this a max. recursion depth exceeded exception?
再帰の深さが最大に達したことを知るにはどうすればよいですか?
try:
recursive_function()
except RuntimeError e:
# is this a max. recursion depth exceeded exception?
再帰の深さが最大に達したことを知るにはどうすればよいですか?
例外自体の内部を見ることができます。
>>> def f():
... f()
...
>>> try:
... f()
... except RuntimeError as re:
... print re.args, re.message
...
('maximum recursion depth exceeded',) maximum recursion depth exceeded
ただし、これと、単に再帰の深さを超える(ランタイム)例外のふりをしているものとを区別できるとは思いません。 message
は非推奨であるため、args
おそらく最善の策であり、Python-3と互換性があります。
更新:Python 3.5には、RecursionError
代わりにキャッチできる特定のものがあります。