7
try:
    recursive_function()
except RuntimeError e:
    # is this a max. recursion depth exceeded exception?

再帰の深さが最大に達したことを知るにはどうすればよいですか?

4

1 に答える 1

8

例外自体の内部を見ることができます。

>>> 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代わりにキャッチできる特定のものがあります。

于 2012-06-27T18:55:29.957 に答える