“银行帐户监管系统”编程心得(二) - 编程点滴 - 李安迪

(这条文章已经被阅读了 201 次) 时间:2001-12-15 03:45:31 来源:李安迪 (cn) 原创-IT

报错函数设计

报错输出格式(示例):
Error Type = Oracle DB Error Severity = Error
Error Number = 1403 Module = /home3/beps/bin/fep/s
ftp_snd
Date = 20010105 Time = 101211
Standard Msg:
Detailed Msg: Failed to fetch from cursor with Key ” ” for BEPS_FILE_LOG Table
Function : sftp_child_snd
*** Diagnostics Information ***
Version No. = %I% Version Date = %G%
System ID = BEPS DBase ID = /
Process ID = 11720 User ID = 106
File = beps_file_log_db.c
Line = 2673

其中:
Error Type为出错类型,分别为OS Error、DB Error、APPL Error(即操作系统错误、数据库错误、应用错误)
由err_set_info()传入
Severity为错误级别,Warning、Error、Fatal 由err_set_info()传入,err_report_info()修改
Error Number为错误代码,在err.h中定义 由err_set_info()传入
Module为当前进程名 由err_initialize()传入
Date为当前系统日期 取系统日期
Time为当前系统时间 取系统时间
Standard Msg为标准错误信息,即在err.h中定义的对应于Error Number的错误信息
根据error_number从err.h中取得
Detailed Msg为详细错误信息 由err_set_inf()及err_append_info()传入
Version No 为版本号 由err_initialize()传入
Version Date为版本日期 由err_initialize()传入
System ID 为系统号 取全局变量gs_servername(在err.h中定义)
Dbase ID 为数据库用户名 由err_initialize()传入
Process ID 为进程号 取自系统
User ID为用户ID 取自系统
File为出错点所在文件 由err_set_info()传入
Line为出错点所在行号 由err_set_info()传入

先根据报错格式定义结构:
typedef struct {
char s_error_type [ 100 ] ;
char s_severity [ 100 ] ;
int I_error_number;
char s_module [ 100 ] ;
char s_date[ 9 ] ;
char s_time[ 7 ] ;
char s_standard_msg[ 300 ] ;
char s_detailed_msg[ 1000 ] ;
char s_version_no[ 100 ] ;
char s_version_date[ 100 ] ;
char s_system_id[ 100 ] ;
char s_dbase_id [ 100 ] ;
int I_process_id ;
int I_user_id ;
char s_file [ 100 ] ;
long l_line;
} ERROR_STRUCT
定义全部静态struct变量,按err_initialize()、err_set_info()及err_append_info传入的参数置其中的值,当err_report_info()时按环境变量ARCH_ERR_OUTPUT打开报错文件,将报错信息按上述格式写到报错文件后边,关闭报错文件。

err_initailize( char * ps_module , 程序名(即进程名)
char * ps_dbase_id, 数据库用户名
char * ps_version_no,
char * ps_version_date
)
err_set_info( char * ps_error_type ,
int I_error_number,
int I_severity, ***
char * ps_file , __FILE__
long l_line , __LINE__
char * ps_detailed_msg ,
);
err_append_info( char * ps_append_msg )
err_report_info( int I_severity )

文章评论:“银行帐户监管系统”编程心得(二) - 人类 - 2001-12-15 12:11:45

源码为主?心得为主?