PowerBuilder 19创建web代理时自定义对象属性赋值报空引用错误问题
报错根本原因
你遇到的空引用报错和属性识别无关,问题出在inv_responsedata的SSN属性作为自定义对象类型,默认不会自动完成实例化:
- 字符串这类基础类型声明后会默认赋予初始值(空字符串),所以直接给
claimstate赋值不会报错 flaggedvalueofstring是自定义对象类型,声明后默认值为null,你没有提前创建实例就直接访问它的currentvalue属性,自然触发空引用错误
解决步骤
- 给
SSN的属性赋值前,先做实例化校验,未实例化则手动创建对象:
// 先判断SSN实例是否有效 IF IsNull(inv_responsedata.SSN) OR NOT IsValid(inv_responsedata.SSN) THEN inv_responsedata.SSN = CREATE flaggedvalueofstring END IF
- 实例化完成后再执行属性赋值即可:
inv_responsedata.SSN.currentvalue= adw_response.object.ssn[1]
注意事项
- 如果
sidesresponse对象里还有其他flaggedvalueofstring类型的属性,赋值前都需要按上述逻辑先做实例化校验 - 为避免内存泄漏,建议在
sidesresponse对象的Destructor事件中统一添加子对象销毁逻辑:
// sidesresponse的Destructor事件代码 IF IsValid(SSN) THEN DESTROY SSN // 其他自定义对象属性都按相同格式补充销毁逻辑
内容的提问来源于stack exchange,提问作者user2618648
相关产品推荐
相关产品推荐

