/* ======================================================= */ // 名稱: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