PROGRESS 4GL:如何屏蔽来自其他过程的运行时错误消息?
Progress 4GL 屏蔽指定运行时错误的实现方式
你当前的代码会捕获所有错误并弹出提示,要屏蔽那些不该在运行时抛出的错误,核心思路是在CATCH块里判断错误编号,只处理需要关注的错误,忽略掉要屏蔽的类型。
以下是调整后的代码示例:
DO ON ERROR UNDO, THROW: FIND Customer 1000. END. CATCH eAnyError AS Progress.Lang.Error: // 这里定义需要屏蔽的错误编号,比如找不到记录的错误103 IF eAnyError:GetMessageNum(1) = 103 THEN DO: // 屏蔽该错误,不做任何提示或处理 RETURN. END. // 非屏蔽错误,正常弹出提示 MESSAGE "Error Number:~t" eAnyError:GetMessageNum(1) "~n" "Error Text:~t" eAnyError:GetMessage(1) VIEW-AS ALERT-BOX BUTTONS OK TITLE "Error processing". END CATCH.
如果需要屏蔽多个错误,可以用IN操作符批量判断:
CATCH eAnyError AS Progress.Lang.Error: // 批量屏蔽错误编号103、200、300 IF eAnyError:GetMessageNum(1) IN (103, 200, 300) THEN DO: RETURN. END. // 处理其他错误 MESSAGE "Error Number:~t" eAnyError:GetMessageNum(1) "~n" "Error Text:~t" eAnyError:GetMessage(1) VIEW-AS ALERT-BOX BUTTONS OK TITLE "Error processing". END CATCH.
说明
- 通过
GetMessageNum(1)获取错误的编号,根据业务需求筛选需要屏蔽的类型 - 被屏蔽的错误会直接跳过处理逻辑,不会弹出任何错误提示
- 保留对其他关键错误的捕获和提示,确保异常情况能被及时感知
内容的提问来源于stack exchange,提问作者Bharat
相关产品推荐
相关产品推荐

