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&#8217;s a throw hook that prints information about
+an exception as it&#8217;s being propagated through the stack:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </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">&#39;function&#39;</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">&#39;function&#39;</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">&#39;script&#39;</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">&quot;</span><span class="si">%s</span><span class="s"> being thrown in </span><span class="si">%s</span><span class="s">&quot;</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&#8217;s the hook in action:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </span><span class="n">code</span> <span class="o">=</span> <span class="s">&quot;(function foo() { throw &#39;oops&#39; })()&quot;</span>
+<span class="gp">&gt;&gt;&gt; </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">&#39;&lt;string&gt;&#39;</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">&quot;caught </span><span class="si">%s</span><span class="s">&quot;</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 &lt;string&gt;</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