better example for returning from a try block (forwardever)
Jesse Luehrs [Tue, 10 May 2011 00:35:48 +0000 (19:35 -0500)]
lib/Try/Tiny.pm

index 382bfdb..5ab8160 100644 (file)
@@ -455,12 +455,32 @@ or
 C<return> returns from the C<try> block, not from the parent sub (note that
 this is also how C<eval> works, but not how L<TryCatch> works):
 
-       sub bar {
-               try { return "foo" };
-               return "baz";
-       }
+  sub parent_sub {
+      try {
+          die;
+      }
+      catch {
+          return;
+      };
+
+      say "this text WILL be displayed, even though an exception is thrown";
+  }
+
+Instead, you should capture the return value:
+
+  sub parent_sub {
+      my $success = try {
+          die;
+          1;
+      }
+      return unless $success;
+
+      say "This text WILL NEVER appear!";
+  }
 
-       say bar(); # "baz"
+Note that if you have a catch block, it must return undef for this to work,
+since if a catch block exists, its return value is returned in place of undef
+when an exception is thrown.
 
 =item *