ファイルサーバのようなものを作っています。
PDF ファイルのサムネイルを ImageMagick を使って生成しているのですが、ImageMagick でエラーが出る PDF ファイルがあります。
そのファイルの場合、単にサムネイルを使わないようにしたいのですが、try::tiny で囲んでも期待する結果になりません。

コード

try{
    my $image = Image::Magick->new;
    $image->Read("${file}[0]");
    $image->Transform(geometry => $imgsize);
    $image->Write($thumbnail);
    undef($image);
    $image = Image::Magick->new;
    $image->Read($thumbnail);
    $image->Resize($imgsize);
    $image->Write($thumbnail);
    undef($image);
}
catch{
    $ret = "<div class = \"misc\">$ext</div>";
    return $ret;
}

出力 HTML ファイル

<div class = "item"><div class = "misc"><a href = "_postcard.pdf">.pdf</a></dError: /undefined in findresource
Operand stack:
   --dict:5/14(L)--   F1   9.0   --dict:5/5(L)--   --dict:5/5(L)--   MSGothic-90msp-RKSJ-H   --dict:10/12(ro)(G)--   --nostringval--   CIDFontObject   --dict:6/6(L)--   --dict:6/6(L)--   Adobe-Japan1
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1862   1   3   %oparray_pop   1861   1   3   %oparray_pop   1845   1   3   %oparray_pop   --nostringval--   --nostringval--   2   1   1   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   false   1   %stopped_push   --nostringval--   %loop_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %loop_continue
Dictionary stack:
   --dict:1156/1684(ro)(G)--   --dict:1/20(G)--   --dict:75/200(L)--   --dict:75/200(L)--   --dict:106/127(ro)(G)--   --dict:286/300(ro)(G)--   --dict:22/25(L)--   --dict:4/6(L)--   --dict:25/40(L)--
Current allocation mode is local
Last OS error: 2
Error: /undefined in findresource
Operand stack:
   --dict:5/14(L)--   F1   9.0   --dict:5/5(L)--   --dict:5/5(L)--   MSGothic-90msp-RKSJ-H   --dict:10/12(ro)(G)--   --nostringval--   CIDFontObject   --dict:6/6(L)--   --dict:6/6(L)--   Adobe-Japan1
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1862   1   3   %oparray_pop   1861   1   3   %oparray_pop   1845   1   3   %oparray_pop   --nostringval--   --nostringval--   2   1   1   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   false   1   %stopped_push   --nostringval--   %loop_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %loop_continue
Dictionary stack:
   --dict:1156/1684(ro)(G)--   --dict:1/20(G)--   --dict:75/200(L)--   --dict:75/200(L)--   --dict:106/127(ro)(G)--   --dict:286/300(ro)(G)--   --dict:22/25(L)--   --dict:4/6(L)--   --dict:25/40(L)--
Current allocation mode is local
Last OS error: 2
iv><input type = "checkbox" name = "cb[]" value = "_postcard.pdf" /><a href = "_postcard.pdf">_postcard.pdf</a></div>

単に、catch ブロックのみを返したいのですが・・・。

追記

ernix さん、回答ありがとうございます。
以下のように書き換えました。

    if(!(-f $thumbnail) or ((-M $thumbnail) > $elapsedtime)){
        $ret = eval{
            my $image = Image::Magick->new;
            $image->Read("${file}[0]");
            $image->Transform(geometry => $imgsize);
            $image->Write($thumbnail);
            undef($image);
            $image = Image::Magick->new;
            $image->Read($thumbnail);
            $image->Resize($imgsize);
            #$image->Resize("120x");
            $image->Write($thumbnail);
            undef($image);
            return "<div class = \"img\"><a href = \"$file\"><img src = \"thumbnail\" class = \"img\" /></a></div>";
        } || do {"<div class = \"misc\">$ext</div>";
        };
        return $ret;
    }
    if(-f $thumbnail){
        $ret = "<div class = \"img\"><a href = \"$file\"><img src = \"$thumbnail\" class = \"img\" /></a></div>";
    }
    else{
        $ret = "<div class = \"misc\">$ext</div>";
    }

同じエラーが出ます。
教えていただいた回答が私には難しすぎるようです…。