对于oracle系统,在准备/执行查询期间生成的软件错误消息无效。在网页上向用户显示完整的查询。希望用用户通用消息替换系统生成的消息。
示例:
软件错误:
DBD::Oracle::st执行失败:ORA-01722:无效数字(DBD错误:错误可能位于"SELECT EQUIPID,EQUIPSHORTNAME,MAXLIMITEDDAYS,STATUS,EQUIPNAME FROM LAB_EQUPMENT_DETAILS WHERE CATEGORYID="3"AND SUBCATEGORID="lt;>"AND STATUS!="DELETE"中的字符136处的<>指示符附近)[对于语句"SELECT EQUIPID,EQUIPSHORTNAME,MAXLIMITEDDAYS,STATUS,EQUIPNAME FROM LAB_EQUPMENT_DETAILS WHERE CATEGORYID='3'AND SUBCATEGORY ID='***'AND STATUS!='DELETE'"],位于/proj/aa/bb/Source/Global_Routines_general_apps.pm第126行。
如需帮助,请发送邮件给网站管理员([…]),给出此错误消息以及错误的时间和日期。
有人能帮我做这件事吗。
提前谢谢。
只需将execute语句封装在eval块中,即可捕获错误。
eval {
$sth->execute();
...
};
if ( $@ ) {
# log the full error message
write_log( $sth->errstr );
# and re-throw the common message
die 'HEY!!!! Something is messed up here!';
}