The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
This file was generated by Devel::Cover Version 1.26
Devel::Cover is copyright 2001-2012, Paul Johnson (paul@pjcj.net)
Devel::Cover is free. It is licensed under the same terms as Perl itself.
The latest version of Devel::Cover should be available from my homepage:
http://www.pjcj.net
-->
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
    <meta http-equiv="Content-Language" content="en-us"></meta>
    <link rel="stylesheet" type="text/css" href="cover.css"></link>
    <link rel="stylesheet" type="text/css" href="cover.css"></link>
    <title>File Coverage: lib/Yukki/Error.pm</title>
</head>
<body>
<h1>File Coverage</h1>
<table>
<tr><td class="h" align="right">File:</td><td align="left">lib/Yukki/Error.pm</td></tr>
<tr><td class="h" align="right">Coverage:</td><td align="left" class="c2">91.3%</td></tr>
</table>
<div><br/></div>
<table>
<tr><th>line</th><th>stmt</th><th>bran</th><th>cond</th><th>sub</th><th>pod</th><th>time</th><th>code</th></tr>
<tr><td class="h">1</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">package Yukki::Error;</td></tr>
<tr><td class="h">2</td><td colspan="7"></td></tr><tr><td class="h">3</td><td><div class="c3">7</div><div class="c3">7</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L3">7</a></div></td><td></td><td><div>55</div><div>18</div></td><td class="s">use v5.24;</td></tr>
<tr><td class="h">4</td><td><div class="c3">7</div><div class="c3">7</div><div class="c3">7</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L4">7</a></div></td><td></td><td><div>21</div><div>7</div><div>38</div></td><td class="s">use utf8;</td></tr>
<tr><td class="h">5</td><td><div class="c3">7</div><div class="c3">7</div><div class="c3">7</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L5">7</a></div></td><td></td><td><div>328</div><div>5186</div><div>27</div></td><td class="s">use Moo;</td></tr>
<tr><td class="h">6</td><td colspan="7"></td></tr><tr><td class="h">7</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">extends qw( HTTP::Throwable::Factory );</td></tr>
<tr><td class="h">8</td><td colspan="7"></td></tr><tr><td class="h">9</td><td><div class="c3">7</div><div class="c3">7</div><div class="c3">7</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L9">7</a></div></td><td></td><td><div>3803</div><div>31</div><div>145</div></td><td class="s">use Yukki::Web::View;</td></tr>
<tr><td class="h">10</td><td colspan="7"></td></tr><tr><td class="h">11</td><td><div class="c3">7</div><div class="c3">7</div><div class="c3">7</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L11">7</a></div></td><td></td><td><div>30</div><div>9</div><div>33</div></td><td class="s">use namespace::clean;</td></tr>
<tr><td class="h">12</td><td colspan="7"></td></tr><tr><td class="h">13</td><td><div class="c3">7</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L13">7</a></div></td><td></td><td><div>2212</div></td><td class="s">use Sub::Exporter -setup =&gt; {</td></tr>
<tr><td class="h">14</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;exports =&gt; [ qw&lt; http_throw http_exception &gt; ],</td></tr>
<tr><td class="h">15</td><td><div class="c3">7</div><div class="c3">7</div></td><td></td><td></td><td></td><td></td><td><div>14057</div><div>68</div></td><td class="s">};</td></tr>
<tr><td class="h">16</td><td colspan="7"></td></tr><tr><td class="h">17</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># ABSTRACT: Yukki&#39;s exception class</td></tr>
<tr><td class="h">18</td><td colspan="7"></td></tr><tr><td class="h">19 - 59</td><td colspan="6"></td><td class="s"><pre>=head1 SYNOPSIS

&nbsp;&nbsp;Yukki::Error-&gt;throw(&quot;Something really bad.&quot;, { ... });

=head1 DESCRIPTION

If you are familiar with L&lt;HTTP::Throwable::Factory&gt;, this is similar to that (and is based on that).

However, there are two differences. First, the error message is given primacy rather than exception type, so you can just use this to throw an exception:

&nbsp;&nbsp;&nbsp;&nbsp;use Yukki::Error qw( http_throw );
&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&#39;something went wrong&#39;);

Since you almost always want your exception to be an internal server error of some kind, this makes more sense to me than having to write:

&nbsp;&nbsp;&nbsp;&nbsp;use HTTP::Throwable::Factory qw( http_throw );
&nbsp;&nbsp;&nbsp;&nbsp;http_throw(InternalServerError =&gt; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message =&gt; &#39;something went wrong&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;});

To specify the type of exception, us C&lt;status&gt;:

&nbsp;&nbsp;&nbsp;&nbsp;use Yukki::Error qw( http_throw );
&nbsp;&nbsp;&nbsp;&nbsp;http_throw(&#39;something was not found&#39;, {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status =&gt; &#39;NotFound&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;});

The second difference is that all exceptions thrown by this factory inherit from L&lt;Yukki::Error&gt;, so this works:

&nbsp;&nbsp;&nbsp;&nbsp;use Scalar::Util qw( blessed );
&nbsp;&nbsp;&nbsp;&nbsp;use Try::Tiny;
&nbsp;&nbsp;&nbsp;&nbsp;try { ... }
&nbsp;&nbsp;&nbsp;&nbsp;catch {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (blassed $_ &amp;&amp; $_-&gt;isa(&quot;Yukki::Error&quot;) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# we now this is an application error from Yukki
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;};

This makes it easy to know whether Yukki generated the exception or something else did.

=cut</pre></td></tr>
<tr><td class="h">60</td><td colspan="7"></td></tr><tr><td class="h">61</td><td><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L61">2</a></div></td><td><div class="c3">1</div></td><td><div>21241</div></td><td class="s">sub base_class { &#39;Yukki::Error&#39; }</td></tr>
<tr><td class="h">62</td><td><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L62">2</a></div></td><td><div class="c3">1</div></td><td><div>18</div></td><td class="s">sub extra_roles { &#39;Yukki::Error::Body&#39; }</td></tr>
<tr><td class="h">63</td><td colspan="7"></td></tr><tr><td class="h">64 - 75</td><td colspan="6"></td><td class="s"><pre>=head1 EXPORTS

=head2 http_exception

&nbsp;&nbsp;my $error = http_exception(&#39;message&#39;, {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;InternalServerError&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show_stask_trace =&gt; 0,
&nbsp;&nbsp;});

Creates a new exception object. Calls the constructor for L&lt;Yukki:Error&gt; and applied the L&lt;HTTP::Throwable&gt; status role needed (prior to construction actually).

=cut</pre></td></tr>
<tr><td class="h">76</td><td colspan="7"></td></tr><tr><td class="h">77</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub http_exception {</td></tr>
<tr><td class="h">78</td><td><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L78">2</a></div></td><td><div class="c3">1</div></td><td><div>5</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($name, $args) = @_;</td></tr>
<tr><td class="h">79</td><td colspan="7"></td></tr><tr><td class="h">80</td><td><div class="c3">2</div><div class="c3">2</div></td><td></td><td><div class="c0"><a href="lib-Yukki-Error-pm--condition.html#L80">50</a></div></td><td></td><td></td><td><div>3</div><div>17</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my %args = %{ $args // {} };</td></tr>
<tr><td class="h">81</td><td><div class="c3">2</div></td><td></td><td><div class="c0"><a href="lib-Yukki-Error-pm--condition.html#L81">50</a></div></td><td></td><td></td><td><div>6</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $status = delete $args{status} // &#39;InternalServerError&#39;;</td></tr>
<tr><td class="h">82</td><td colspan="7"></td></tr><tr><td class="h">83</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>23</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;Yukki::Error-&gt;new_exception($status =&gt; {</td></tr>
<tr><td class="h">84</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%args,</td></tr>
<tr><td class="h">85</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message =&gt; &quot;$name&quot;,</td></tr>
<tr><td class="h">86</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;});</td></tr>
<tr><td class="h">87</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">88</td><td colspan="7"></td></tr><tr><td class="h">89 - 98</td><td colspan="6"></td><td class="s"><pre>=head2 http_throw

&nbsp;&nbsp;http_throw(&#39;message&#39;, {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#39;InternalServerError&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show_stask_trace =&gt; 0,
&nbsp;&nbsp;});

Constructs the exception (via L&lt;/http_exception&gt;) and throws it.

=cut</pre></td></tr>
<tr><td class="h">99</td><td colspan="7"></td></tr><tr><td class="h">100</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub http_throw {</td></tr>
<tr><td class="h">101</td><td><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L101">2</a></div></td><td><div class="c3">1</div></td><td><div>4</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($name, $args) = @_;</td></tr>
<tr><td class="h">102</td><td colspan="7"></td></tr><tr><td class="h">103</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>6</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;http_exception($name, $args)-&gt;throw;</td></tr>
<tr><td class="h">104</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">105</td><td colspan="7"></td></tr><tr><td class="h">106</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub BUILDARGS {</td></tr>
<tr><td class="h">107</td><td><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L107">2</a></div></td><td><div class="c0">0</div></td><td><div>21852</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($class, $args) = @_;</td></tr>
<tr><td class="h">108</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>26</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$args;</td></tr>
<tr><td class="h">109</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">110</td><td colspan="7"></td></tr><tr><td class="h">111 - 119</td><td colspan="6"></td><td class="s"><pre>=begin Pod::Coverage

&nbsp;&nbsp;&nbsp;&nbsp;BUILDARGS
&nbsp;&nbsp;&nbsp;&nbsp;base_class
&nbsp;&nbsp;&nbsp;&nbsp;extra_roles

=end Pod::Coverage

=cut</pre></td></tr>
<tr><td class="h">120</td><td colspan="7"></td></tr><tr><td class="h">121</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">{</td></tr>
<tr><td class="h">122</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;package Yukki::Error::Body;</td></tr>
<tr><td class="h">123</td><td colspan="7"></td></tr><tr><td class="h">124</td><td><div class="c3">7</div><div class="c3">7</div><div class="c3">7</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L124">7</a></div></td><td></td><td><div>3344</div><div>9</div><div>25</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;use Moo::Role;</td></tr>
<tr><td class="h">125</td><td colspan="7"></td></tr><tr><td class="h">126 - 132</td><td colspan="6"></td><td class="s"><pre>=head1 METHODS

=head2 body

Renders the HTML body for the error.

=cut</pre></td></tr>
<tr><td class="h">133</td><td colspan="7"></td></tr><tr><td class="h">134</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;sub body {</td></tr>
<tr><td class="h">135</td><td><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L135">1</a></div></td><td><div class="c0">0</div></td><td><div>2</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my ($self, $env) = @_;</td></tr>
<tr><td class="h">136</td><td colspan="7"></td></tr><tr><td class="h">137</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>3</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $app&nbsp;&nbsp;= $env-&gt;{&#39;yukki.app&#39;};</td></tr>
<tr><td class="h">138</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>7</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $view = Yukki::Web::View-&gt;new(app =&gt; $app);</td></tr>
<tr><td class="h">139</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>141</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $ctx&nbsp;&nbsp;= Yukki::Web::Context-&gt;new(env =&gt; $env);</td></tr>
<tr><td class="h">140</td><td colspan="7"></td></tr><tr><td class="h">141</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>25</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $template = $view-&gt;prepare_template(</td></tr>
<tr><td class="h">142</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;&nbsp;&nbsp;=&gt; &#39;error.html&#39;,</td></tr>
<tr><td class="h">143</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directives =&gt; [</td></tr>
<tr><td class="h">144</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;#error-page&#39; =&gt; &#39;error_message&#39;,</td></tr>
<tr><td class="h">145</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;],</td></tr>
<tr><td class="h">146</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</td></tr>
<tr><td class="h">147</td><td colspan="7"></td></tr><tr><td class="h">148</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>603</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ctx-&gt;response-&gt;page_title($self-&gt;reason);</td></tr>
<tr><td class="h">149</td><td colspan="7"></td></tr><tr><td class="h">150</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>100</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $view-&gt;render_page(</td></tr>
<tr><td class="h">151</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template =&gt; $template,</td></tr>
<tr><td class="h">152</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context&nbsp;&nbsp;=&gt; $ctx,</td></tr>
<tr><td class="h">153</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vars&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; {</td></tr>
<tr><td class="h">154</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;error_message&#39; =&gt; $self-&gt;message,</td></tr>
<tr><td class="h">155</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</td></tr>
<tr><td class="h">156</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</td></tr>
<tr><td class="h">157</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">158</td><td colspan="7"></td></tr><tr><td class="h">159 - 163</td><td colspan="6"></td><td class="s"><pre>=head2 body_headers

Setup the HTTP headers.

=cut</pre></td></tr>
<tr><td class="h">164</td><td colspan="7"></td></tr><tr><td class="h">165</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;sub body_headers {</td></tr>
<tr><td class="h">166</td><td><div class="c3">1</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L166">1</a></div></td><td><div class="c0">0</div></td><td><div>30</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my ($self, $body) = @_;</td></tr>
<tr><td class="h">167</td><td colspan="7"></td></tr><tr><td class="h">168</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return [</td></tr>
<tr><td class="h">169</td><td><div class="c3">1</div></td><td></td><td></td><td></td><td></td><td><div>4</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;Content-type&#39;&nbsp;&nbsp;&nbsp;=&gt; &#39;text/html&#39;,</td></tr>
<tr><td class="h">170</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;Content-length&#39; =&gt; length $body,</td></tr>
<tr><td class="h">171</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;];</td></tr>
<tr><td class="h">172</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">173</td><td colspan="7"></td></tr><tr><td class="h">174 - 178</td><td colspan="6"></td><td class="s"><pre>=head2 as_string

Returns the message.

=cut</pre></td></tr>
<tr><td class="h">179</td><td colspan="7"></td></tr><tr><td class="h">180</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;sub as_string {</td></tr>
<tr><td class="h">181</td><td><div class="c3">7</div></td><td></td><td></td><td><div class="c3"><a href="lib-Yukki-Error-pm--subroutine.html#L181">7</a></div></td><td><div class="c0">0</div></td><td><div>396</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $self = shift;</td></tr>
<tr><td class="h">182</td><td><div class="c3">7</div></td><td></td><td></td><td></td><td></td><td><div>15</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $self-&gt;message;</td></tr>
<tr><td class="h">183</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">184</td><td colspan="7"></td></tr><tr><td class="h">185</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;around as_psgi =&gt; sub {</td></tr>
<tr><td class="h">186</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shift; # original method is ignored</td></tr>
<tr><td class="h">187</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my ($self, $env) = @_;</td></tr>
<tr><td class="h">188</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $body&nbsp;&nbsp;&nbsp;&nbsp;= $self-&gt;body( $env );</td></tr>
<tr><td class="h">189</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $headers = $self-&gt;build_headers( $body );</td></tr>
<tr><td class="h">190</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ $self-&gt;status_code, $headers, [ defined $body ? $body : () ] ];</td></tr>
<tr><td class="h">191</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;};</td></tr>
<tr><td class="h">192</td><td colspan="7"></td></tr><tr><td class="h">193</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">194</td><td colspan="7"></td></tr><tr><td class="h">195</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">1;</td></tr>
</table>
</body>
</html>