<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    weidagang2046的專欄

    物格而后知致
    隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
    數據加載中……

    如何捕捉CGI程序exception

    用perl寫cgi程序的時候,如果出現了問題,大多數都必須查看Web server的日志才能知道程序哪里出了錯誤,頁面一般只返回500服務器錯誤,不能立刻獲得錯誤的原因。

    使用php的程序員就沒有這個煩惱,因為php默認會將錯誤都打印到頁面上。CGI程序里如何才能做到這一點呢?

    CGI::Carp這個模塊支持這個功能,以下是例子:

    				
    						use CGI::Carp qw(fatalsToBrowser);
    die "Bad error here";
    		

    詳細請參閱CGI::Crap的在線手冊

    那如果是自己寫的簡單CGI程序,不使用CGI.pm怎么辦?以下是簡單的方法......

    原理簡述

    Perl 提供了%SIG 這個特殊的HASH,通過定義信號響應函數,可以捕捉die及一些warning的信息,并將這些信息打印到web頁上。但為了盡可能早的加載這些代碼,最好將信號捕捉代碼放到BEGIN塊中,這樣就能保證程序一執行就先執行異常捕捉這段代碼了。
    BEGIN {
         # fatal handler setting.
         $SIG{__DIE__} = $SIG{__WARN__} = \&some_func;
    }

    代碼例子

    以下是一個簡單的例程,定義了一個叫handler_fatal處理函數來處理意外錯誤信息。
    #!/usr/bin/perl -wuse strict
    
    BEGIN {
         # fatal handler setting.
         $SIG{__DIE__} = $SIG{__WARN__} = \&handler_fatal;
    }
    # some perl code goes here
    ......
    
    sub handler_fatal {
         print "Content-type: text/html\n\n";
         print "@_";
    }

    上面這段perl程序中,如果調用一個名稱為abc();的子例程,瀏覽器將看到如下的錯誤信息:

    Undefined subroutine &main::abc called at /home/hzqbbc/cgi-bin/fatal.cgi line 8.
    

    通過這個方法就可以很簡便的進行程序調試了。Extmail中的CGI.pm就是使用類似的方法,可以捕捉die(), warn() 等函數產生的錯誤及系統的錯誤提示。

    from: http://www.hzqbbc.com/blog/arch/2005/05/aecgicexception.html

    posted on 2006-08-26 09:07 weidagang2046 閱讀(618) 評論(0)  編輯  收藏 所屬分類: Perl

    主站蜘蛛池模板: 一级日本高清视频免费观看| 久久久久亚洲AV成人无码网站 | 亚洲av无码专区首页| 亚洲欧洲日产v特级毛片| 亚洲人成网www| 91亚洲国产成人精品下载| 亚洲情a成黄在线观看动漫尤物| 亚洲av伊人久久综合密臀性色 | 免费一级成人毛片| 无码专区一va亚洲v专区在线 | 亚洲网站免费观看| 亚洲一区在线免费观看| 无码国产精品一区二区免费| 日韩欧毛片免费视频| 免费看无码自慰一区二区| 热99re久久免费视精品频软件| 免费国产高清视频| 亚洲五月午夜免费在线视频| 亚洲一区精品无码| 亚洲AV无码一区二区三区DV| 久久精品蜜芽亚洲国产AV| 亚洲国产成人va在线观看网址| 亚洲乱码在线卡一卡二卡新区| 亚洲精品色播一区二区| 免费无码国产在线观国内自拍中文字幕| fc2免费人成为视频| a级毛片在线免费| 亚洲无砖砖区免费| 免费看大黄高清网站视频在线| 亚洲成av人片一区二区三区 | 免费能直接在线观看黄的视频 | 国产精品免费久久| 另类免费视频一区二区在线观看| 亚洲一区免费视频| 国产成人免费一区二区三区| 亚洲自偷自偷偷色无码中文| 亚洲电影中文字幕| 亚洲日韩精品无码专区| eeuss影院ss奇兵免费com| 最近免费字幕中文大全视频| 韩国欧洲一级毛片免费|