PowerBuilder DataWindow中“Expression is not valid”错误无法捕获求助
DataWindow Describe方法异常捕获问题解决
当使用DataWindow的Describe方法执行evaluate表达式时,若指定列不存在,系统会弹出“Expression is not valid”错误窗口,但无法通过try/catch(DWRuntimeError)捕获异常,导致代码无法自行处理该错误。
以下是两种可行的解决方式:
提前校验列的存在性
在执行evaluate表达式前,先用Describe检查目标列是否存在:string ls_col_status ls_col_status = dw.Describe("columname.ColType") if ls_col_status = "!" then logger.log("指定的列不存在") else dw.Describe("evaluate('columname',1)") end ifDescribe("列名.ColType")返回!时,说明该列不存在,可直接在代码中处理错误。修改DataWindow错误处理模式
通过Modify方法关闭DataWindow的错误弹窗,让错误以异常形式抛出,即可用try/catch捕获:try dw.Modify("DataWindow.Message.Dialog='No'") dw.Describe("evaluate('columname',1)") catch (DWRuntimeError dwrte) logger.log(dwrte.text) finally // 若需要恢复默认弹窗行为,可添加此句 dw.Modify("DataWindow.Message.Dialog='Yes'") end try设置
DataWindow.Message.Dialog='No'后,错误不再弹出窗口,而是触发DWRuntimeError异常,由catch块处理。
内容的提问来源于stack exchange,提问作者Ruhland Richard
相关产品推荐
相关产品推荐

