<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

    主站蜘蛛池模板: 91精品全国免费观看青青| 女人18毛片免费观看| 久久久久亚洲AV无码观看| 成人免费毛片内射美女-百度| 亚洲精品无码久久久久牙蜜区| 亚洲Av无码国产情品久久| 无码AV片在线观看免费| 亚洲av无码专区国产不乱码| 国产亚洲AV夜间福利香蕉149| 国产大片免费网站不卡美女 | 亚洲开心婷婷中文字幕| 国产91免费视频| 特级毛片aaaa级毛片免费| 精品日韩亚洲AV无码一区二区三区 | 久久亚洲AV成人无码国产电影 | 无码区日韩特区永久免费系列| 羞羞的视频在线免费观看| 91亚洲导航深夜福利| 亚洲国产精品无码久久青草| 四虎最新永久免费视频| 成全视成人免费观看在线看| 最新亚洲卡一卡二卡三新区| 黑人精品videos亚洲人| 国产免费怕怕免费视频观看| 亚洲免费观看网站| 中文字幕在线观看免费| 亚洲国产成人无码AV在线| 亚洲视频免费一区| 亚洲午夜福利在线观看| 国产精品免费视频一区| www视频在线观看免费| 99久久99这里只有免费的精品| 大桥未久亚洲无av码在线 | 亚洲6080yy久久无码产自国产| 久久亚洲美女精品国产精品| 亚洲一区二区三区AV无码| 免费h黄肉动漫在线观看| 成年女人免费碰碰视频| 巨波霸乳在线永久免费视频| 国产自国产自愉自愉免费24区| 黄色网址免费在线|