/* ======================================================= */ // 名称:gf_GetErrorInfo() // 中文名称:(数据获取)获取系统错误信息函数 // 作用:错误信息反馈 // 参数:ERROR aerr_Info // 返回值:STRING //返回空字符串表示无错误 // 原作者: // 备注:不需要再使用了系统标准的Error变量,返回空字符串表示没有错误 /* ======================================================= */ STRING ls_ErrMessage STRING ls_ErrText
IF IsNull(aerr_Info) THEN RETURN "Error对象为空" //NULL IF NOT IsValid(aerr_Info) THEN RETURN "Error对象没有实例化" //NON ISVALID
IF aerr_Info.Number=0 THEN RETURN ""
CHOOSE CASE aerr_Info.Number CASE 1 //By Zero ls_ErrMessage="数学错误,出现被零除" CASE 2 //Null Object Reference ls_ErrMessage="程序中引用了空对象" CASE 3 //Array Boundary Exceeded ls_ErrMessage="数组出现越界访问" CASE 4 //Enumerated Value Is Out Of Range For Function ls_ErrMessage="枚举值超出函数范围" CASE 5 //Negative Value Encountered In Function ls_ErrMessage="函数中遇到否定值" CASE 6 //Invalid DataWindow Row/Column Specified ls_ErrMessage="数据窗口中存在非法的行或列" CASE 7 //Unresolvable External When Linking Reference ls_ErrMessage="链接调用时,出现不可确认的外部对象引用" CASE 8 //Reference Of Array With Null Subscript ls_ErrMessage="引用带有空下标的数组" CASE 9 //DLL Function Not Found In Current Application ls_ErrMessage="当前应用程序中没有找到动态链接库的函数" CASE 10 //Unsupported Argument Type In DLL Function ls_ErrMessage="出现DLL库函数不支持的参数类型" CASE 11 //Object File Is Out Of Date And Must Be Converted To Current Version ls_ErrMessage="对象文件已过期,必须转换为当前的PowerBuilder版本" CASE 12 //DataWindow Column Type Does Not Match GetItem Type ls_ErrMessage="数据窗口列类型与GetItem函数的类型不匹配" CASE 13 //Unresolved Property Reference ls_ErrMessage="未知的属性引用" CASE 14 //Error Opening DLL Library For External Function ls_ErrMessage="为外部函数调用而打开动态链接库时发生错误" CASE 15 //Error Calling External Function Name ls_ErrMessage="错误调用外部函数" CASE 16 //Maximum String Size Exceeded ls_ErrMessage="字符串长度超越了最大限制" CASE 17 //DataWindow Referenced In DataWindow Object Does Not Exist ls_ErrMessage="数据窗口控件中引用的数据窗口对象不存在" CASE 18 //Function Does Not Return Value ls_ErrMessage="必须返回值的函数没有返回值" CASE 19 //Cannot Convert Name In Any Variable To Name ls_ErrMessage="不能将任意变量中的数据类型转换为其他数据类型" CASE 20 //Database Command Has Not Been Successfully Prepared ls_ErrMessage="没有成功地准备好数据库命令" CASE 21 //Bad Runtime Function Reference ls_ErrMessage="引用了错误的运行时函数" CASE 22 //Unknown Object Type ls_ErrMessage="未知的对象类型" CASE 23 //Cannot Assign Object Of Type Name To Variable Of Type Name ls_ErrMessage="不能将对象赋给变量,两种类型不能赋值" CASE 24 //Function Call Does Not Match Its Definition ls_ErrMessage="函数调用与其定义不匹配" CASE 25 //Double Or Real Expression Has Overflowed ls_ErrMessage="DOUBLE或者REAL表达式溢出" CASE 26 //Field Name Assignment Not Supported ls_ErrMessage="不支持对某种数据类型的字段的赋值" CASE 27 //Cannot Take A Negative To A Noninteger Power ls_ErrMessage="不能计算一个负数的非整数次方" CASE 28 //VBX Error ls_ErrMessage="某种数据类型的变量引起VBX错误" CASE 29 //Nonarray Expected In Any Variable ls_ErrMessage="ANY数据类型变量必需是非整组类型" CASE 30 //External Object Does Not Support Data Type Name ls_ErrMessage="外部对象不支持这种数据类型" CASE 31 //External Object Data Type Name Not Supported ls_ErrMessage="这种数据类型不支持外部对象" CASE 32 //Name Not Found Calling External Object Function Name ls_ErrMessage="调用外部对象函数时,未找到函数名" CASE 33 //Invalid Parameter Type Calling External Object Function Name ls_ErrMessage="调用外部对象函数时,参数类型不合法" CASE 34 //Incorrect Number Of Parameters Calling External Object Function Name ls_ErrMessage="调用外部对象函数时,使用不正确的参数个数" CASE 35 //Error Calling External Object Function Name ls_ErrMessage="错误调用外部对象函数" CASE 36 //Name Not Found Accessing External Object Property Name ls_ErrMessage="访问外部对象属性时,未找到名称" CASE 37 //Type Mismatch Accessing External Object Property Name ls_ErrMessage="访问外部对象属性时,类型不匹配" CASE 38 //Incorrect Number Of Subscripts Accessing External Object Property Name ls_ErrMessage="询问外部对象属性时,下标数目不正确" CASE 39 //Error Accessing External Object Property Name ls_ErrMessage="错误访问外部对象属性" CASE 40 //Mismatched Any Data Types In Expression ls_ErrMessage="与表达式中的数据类型不匹配" CASE 41 //Illegal Any Data Type In Expression ls_ErrMessage="表达式中有不合法的数据类型" CASE 42 //Specified Argument Type Differs From Required Argument Type At Runtime In DLL Function Name ls_ErrMessage="在DLL库函数中,运行时所指定的参数类型与所要求的参数类型不相同" CASE 43 //Parent Object Does Not Exist ls_ErrMessage="父对象不存在" CASE 44 //Function Has Conflicting Argument Or Return Type In Ancestor ls_ErrMessage="祖先的函数中发生具有冲突的参数及返回类型" CASE 45 //Internal Table Overflow; Maximum Number Of Objects Exceeded ls_ErrMessage="内部表溢出;对象的最大数目已经超越允许值" CASE 46 //Null Object Reference Can Not Be Assigned Or Passed To A Variable Of This Type ls_ErrMessage="空对象引用不能被赋值或传递给同类型的变量" CASE 47 //Array Expected In Any Variable ls_ErrMessage="变量需要数组值" CASE 48 //Size Mismatch In Array To Object Conversion ls_ErrMessage="数组的大小与对象的转换不匹配" CASE 49 //Type Mismatch In Array To Object Conversion ls_ErrMessage="数组的类型与对象的转换不匹配" CASE 50 //Distributed Service Error ls_ErrMessage="分布式服务错误" //PB7以上会触发一个EAServer异常 CASE 51 //Bad Argument List For Function/Event ls_ErrMessage="函数或事件的参数不合法" CASE 52 //Distributed Communications Error ls_ErrMessage="分布式通讯错误" //PB7以上会触发一个EAServer异常 CASE 53 //Requested Server Not Active ls_ErrMessage="被请求的服务器没有激活" CASE 54 //Server Not Accepting Requests ls_ErrMessage="服务器未接受请求" CASE 55 //Request Terminated Abnormally ls_ErrMessage="请求意外中断" CASE 56 //Response To Request Incomplete ls_ErrMessage="非完整的相应请求" CASE 57 //Not Connected ls_ErrMessage="未进行连接或者连接不成功" CASE 58 //Object Instance Does Not Exist ls_ErrMessage="对象实例不存在" CASE 59 //Invalid Column Range ls_ErrMessage="不合法的列范围" CASE 60 //Invalid Row Range ls_ErrMessage="不合法的行范围" CASE 61 //Invalid Conversion Of Number Dimensional Array To Object ls_ErrMessage="将任意类型数组不合法的转换成对象" CASE 62 //Server Busy ls_ErrMessage="服务器忙" CASE 63 //Function/Event With No Return Value Used In Expression ls_ErrMessage="在表达式中函数或者事件中没有返回值" CASE 64 //Object Array Expected In Left Side Of Assignment ls_ErrMessage="赋值语句左边需要对象数组" CASE 65 //Dynamic Function Not Found,Possible Causes Include:Pass By Value/Reference Mismatch ls_ErrMessage="动态函数没有找到,可能是因为值传递或者引用传递不匹配" CASE 66 //Invalid Subscript For Array Index Operation ls_ErrMessage="数组索引使用了非法的下标" CASE 67 //Null Object Reference Can Not Be Assigned Or Passed To An Autoinstantiate ls_ErrMessage="空的对象引用不能赋值或者传递给一个自动实例化对象" CASE 68 //Null Object Reference Can Not Be Passed To External DLL Function Name ls_ErrMessage="空的对象引用不能传递给外部动态链接库函数" CASE 69 //Function Name Can Not Be Called From A Secured Runtime Session ls_ErrMessage="安全实时对话模式中不能调用该函数" CASE 70 //External DLL Function Name Can Not Be Called From A Secured Runtime Session ls_ErrMessage="安全实时对话模式中不能调用外部动态链接库函数" CASE 71 //General Protection Fault Occurred ls_ErrMessage="发生一般的保护性错误" CASE 72 //Name Failed With An Operating System Error Code Of Number ls_ErrMessage="字段发生一个操作系统级错误" CASE 73 //Reference Parameters Can Not Be Passed To An Asynchronous Shared/Remote Object Method ls_ErrMessage="引用型参数不能传递给一个异步的共享或者远程对象方法" CASE 74 //Reference Parameters Can Not Be Passed To A Shared Object Method ls_ErrMessage="引用型参数不能传递给一个共享对象的方法" CASE 75 //The Server Has Forced The Client To Disconnect ls_ErrMessage="服务器已经强制客户端断开连接" //PB7以上,EAServer会触发一个异常 CASE 76 //Passing Null As A Parameter To External Function Name ls_ErrMessage="给外部函数传递了一个空值参数" CASE 77 //Object Passed To Shared/Remote Object Method Is Not A Nonvisual User Object ls_ErrMessage="对象传递给共享或者远程对象的方法必须是一个不可视的用户对象" CASE 78 //Listen Can Only Be Done In Enterprise Version Of PowerBuilder ls_ErrMessage="监听只能在企业版的PowerBuilder中使用" CASE 79 //The Argument To Name Must Be An Array ls_ErrMessage="参数必须是一个数组" CASE 80 //The Server Has Timed Out The Client Connection ls_ErrMessage="客户端尝试连接的时间已经超出服务器设置的限制时间" //PB7以上,EAServer会触发一个异常 CASE 81 //Function Argument File Creator Must Be A Four Character String ls_ErrMessage="函数参数文件创建者必须是一个四个字符的字符串" //只会出现在Source Control模式下 CASE 82 //Function Argument File Type Must Be A Four Character String ls_ErrMessage="函数参数文件类型必须是一个四个字符的字符串" //只会出现在Source Control模式下 CASE 83 //Attempt To Invoke A Function Or Event That Is Not Accessible ls_ErrMessage="试图调用一个不可存取的函数或事件" CASE 84 //Wrong Number Of Arguments Passed To Function/Event Call ls_ErrMessage="在函数或者事件中传递的参数个数错误" CASE 85 //Error In Reference Argument Passed In Function/Event Call ls_ErrMessage="在函数或者事件中传递的引用型参数错误" CASE 86 //Ambiguous Function/Event Reference ls_ErrMessage="引用不明确的函数或者事件" CASE 87 //The Connection To The Server Has Been Lost ls_ErrMessage="与服务器的连接已经丢失" //PB7以上,EAServer会触发一个异常 CASE 88 //Cannot Ask For ClassDefinition Information On Open Painter:Name ls_ErrMessage="不能在打开的画笔中查询类定义信息" CASE 89 //PowerBuilder 5.0 Style Proxy Objects Are Not Supported.Copy The New Style Proxy That Was Generated At Migration Time ls_ErrMessage="5.0中的类型代理对象不支持,拷贝移植时产生的新的类型代理" //PB5和PB6的代码升级到PB7以上会发生该错误 CASE 90 //Cannot Assign Array Of Type Name To Variable Of Type Array Of Name ls_ErrMessage="这两种数据类型的数组不能赋值" CASE 91 //Cannot Convert Any In Any Variable To String.Possible Cause Uninitialized Value ls_ErrMessage="不能将任意类型变量转变成字符型变量" CASE 92 //Required Property Name Is Missing ls_ErrMessage="必要的属性名丢失" CASE 93 //CORBA User Exception:Exceptionname ls_ErrMessage="CORBA组件的调用者抛出了一个异常" //只会在EAServer中出现,一般要自己限制 CASE 94 //CORBA System Exception:Exceptionname ls_ErrMessage="CORBA组件自身抛出了一个异常" //只会在EAServer中出现,一般要自己限制 CASE 95 //CORBA Objects May Not Be Created Locally ls_ErrMessage="CORBA组件不能在本地创建实例" //只会在EAServer中出现,一般要自己限制 CASE 96 //Exception Thrown Has Not Been Handled ls_ErrMessage="抛出的异常没有被处理" CASE 97 //Cannot Save Name Because Of A Circular Reference Problem ls_ErrMessage="不能保存一个被嵌套引用的对象" //只会出现在程序中修改PBL或者PBD的情况下 CASE 98 //Obsolete Object Reference ls_ErrMessage="使用了已被废弃的函数" //例如在EAServer上使用了GetStateStatus()函数,DataWindow的DBErrorCode()和DBErrorMessage()函数 CASE 99 //Unknown Exception Thrown From A PB Extension ls_ErrMessage="抛出的异常属于一个PB扩展" //只会在使用了PBNI下才会出现 CASE ELSE //Unkown Error ls_ErrMessage="未知错误" END CHOOSE
ls_ErrText+="~r~n" ls_ErrText+="系统错误日志(Error Log)"+"~r~n~r~n" ls_ErrText+="出错时间(Error Time):"+String(Now(),"YYYY年MM月DD日 HH时MM分SS秒")+"~r~n" ls_ErrText+="出错编号(Error Number):"+String(aerr_Info.Number)+"~r~n" ls_ErrText+="出错对象(Error Object):"+aerr_Info.Object+"~r~n" ls_ErrText+="出错事件(Error Event):"+aerr_Info.ObjectEvent+"~r~n" ls_ErrText+="出错行数(Error Line):"+String(aerr_Info.Line)+"~r~n" ls_ErrText+="出错信息(Error Text):"+ls_ErrMessage+"~r~n"
IF aerr_Info.Object<>aerr_Info.WindowMenu THEN CHOOSE CASE Lower(Left(aerr_Info.WindowMenu,2)) CASE "m_" ls_ErrText+="出错菜单(Error Menu):"+aerr_Info.WindowMenu+"~r~n" CASE "w_","ws" ls_ErrText+="出错窗口(Error Window):"+aerr_Info.WindowMenu+"~r~n" // CASE "f_","sf" // ls_ErrText+="出错函数(Error Function):"+aerr_Info.WindowMenu+"~r~n" CASE ELSE ls_ErrText+="出错控件(Error Control):"+aerr_Info.WindowMenu+"~r~n" END CHOOSE END IF
ls_ErrText+="详细原因(Error Message):"+aerr_Info.Text
RETURN ls_ErrText