Mercurial > pymonkey
diff docs/rendered/pymonkey.html @ 168:68d9e1ed19f8
Added docs for set_throw_hook().
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Sun, 30 Aug 2009 20:31:58 -0700 |
parents | b745c9d8eef9 |
children | 2b98d4643c44 |
line wrap: on
line diff
--- a/docs/rendered/pymonkey.html Sun Aug 30 20:13:41 2009 -0700 +++ b/docs/rendered/pymonkey.html Sun Aug 30 20:31:58 2009 -0700 @@ -419,6 +419,41 @@ </dd></dl> <dl class="method"> +<dt id="pymonkey.Context.set_throw_hook"> +<tt class="descname">set_throw_hook</tt><big>(</big><em>func</em><big>)</big><a class="headerlink" href="#pymonkey.Context.set_throw_hook" title="Permalink to this definition">¶</a></dt> +<dd><p>Sets the throw hook for the context to the given Python callable. +The hook is triggered whenever an exception is thrown in the +context.</p> +<p><cite>func</cite> takes one argument: the context that triggered it.</p> +<p>For example, here’s a throw hook that prints information about +an exception as it’s being propagated through the stack:</p> +<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="k">def</span> <span class="nf">throwhook</span><span class="p">(</span><span class="n">cx</span><span class="p">):</span> +<span class="gp">... </span> <span class="n">stack</span> <span class="o">=</span> <span class="n">cx</span><span class="o">.</span><span class="n">get_stack</span><span class="p">()</span> +<span class="gp">... </span> <span class="k">if</span> <span class="n">stack</span><span class="p">[</span><span class="s">'function'</span><span class="p">]:</span> +<span class="gp">... </span> <span class="n">where</span> <span class="o">=</span> <span class="n">stack</span><span class="p">[</span><span class="s">'function'</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> +<span class="gp">... </span> <span class="k">else</span><span class="p">:</span> +<span class="gp">... </span> <span class="n">where</span> <span class="o">=</span> <span class="n">stack</span><span class="p">[</span><span class="s">'script'</span><span class="p">]</span><span class="o">.</span><span class="n">filename</span> +<span class="gp">... </span> <span class="n">exc</span> <span class="o">=</span> <span class="n">cx</span><span class="o">.</span><span class="n">get_pending_exception</span><span class="p">()</span> +<span class="gp">... </span> <span class="k">print</span> <span class="s">"</span><span class="si">%s</span><span class="s"> being thrown in </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">exc</span><span class="p">,</span> <span class="n">where</span><span class="p">)</span> +</pre></div> +</div> +<p>Here’s the hook in action:</p> +<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="n">cx</span> <span class="o">=</span> <span class="n">pymonkey</span><span class="o">.</span><span class="n">Runtime</span><span class="p">()</span><span class="o">.</span><span class="n">new_context</span><span class="p">()</span> +<span class="gp">>>> </span><span class="n">cx</span><span class="o">.</span><span class="n">set_throw_hook</span><span class="p">(</span><span class="n">throwhook</span><span class="p">)</span> +<span class="gp">>>> </span><span class="n">obj</span> <span class="o">=</span> <span class="n">cx</span><span class="o">.</span><span class="n">new_object</span><span class="p">()</span> +<span class="gp">>>> </span><span class="n">code</span> <span class="o">=</span> <span class="s">"(function foo() { throw 'oops' })()"</span> +<span class="gp">>>> </span><span class="k">try</span><span class="p">:</span> +<span class="gp">... </span> <span class="n">cx</span><span class="o">.</span><span class="n">evaluate_script</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="s">'<string>'</span><span class="p">,</span> <span class="mf">1</span><span class="p">)</span> +<span class="gp">... </span><span class="k">except</span> <span class="n">pymonkey</span><span class="o">.</span><span class="n">error</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> +<span class="gp">... </span> <span class="k">print</span> <span class="s">"caught </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span> +<span class="go">oops being thrown in foo</span> +<span class="go">oops being thrown in <string></span> +<span class="go">caught oops</span> +</pre></div> +</div> +</dd></dl> + +<dl class="method"> <dt id="pymonkey.Context.set_operation_callback"> <tt class="descname">set_operation_callback</tt><big>(</big><em>func</em><big>)</big><a class="headerlink" href="#pymonkey.Context.set_operation_callback" title="Permalink to this definition">¶</a></dt> <dd><p>Sets the operation callback for the context to the given Python