Salesforce Apex 测试失败 - 有人可以解释错误消息吗?

问题描述 投票:0回答:1

我尝试部署更新的 Apex 类。 但我总是收到这个错误:

OCRServiceHandlerTest   testProcessOCRTickets   System.NullPointerException: Attempt to de-reference a null object
Stack Trace: Class.OCRServiceHandler.getAttributesInfo: line 204, column 1 Class.OCRServiceHandler.parseResponse: line 179, column 1 Class.OCRServiceHandler.processFileData: line 142, column 1 Class.OCRServiceHandler.processOCRTickets: line 66, column 1

还有这个:

OCRServiceHandlerTest   testProcessOcrTicketCtrl    System.NullPointerException: Attempt to de-reference a null object
Stack Trace: Class.OCRServiceHandler.getAttributesInfo: line 204, column 1 Class.OCRServiceHandler.parseResponse: line 179, column 1 Class.OCRServiceHandler.processFileData: line 142, column 1 Class.OCRServiceHandler.processOCRTickets: line 66, column 1

我必须承认,这是我第一次在APEX中开发东西。

第 204 行看起来像这样:

String authorityEmail = getCompleteJoinedContent(page?.prediction?.authority_email.values);

在 API 和对象中,该字段是电子邮件类型字段。 我需要将第 204 行更改为电子邮件或类似的内容吗?

有人可以帮我吗?

谢谢。

salesforce apex apex-code
1个回答
0
投票

您看到的错误消息,

System.NullPointerException: Attempt to de-reference a null object
,是 Apex(以及其他面向对象语言)中的常见错误消息。这意味着您正在尝试访问尚未初始化的对象上的属性或方法(即,它是
null
)。

从您提供的堆栈跟踪来看,错误似乎源自第 204 行的

getAttributesInfo
方法。有问题的行是:

String authorityEmail = getCompleteJoinedContent(page?.prediction?.authority_email.values);

在 Apex 中使用安全导航运算符 (

?.
) 是为了防止 null 取消引用异常。但是,该错误表明该链中的某些内容为空,并且您正在尝试访问其上的属性或方法。

以下是可能为 null 的内容的细分:

  1. page
  2. page.prediction
  3. page.prediction.authority_email

如果其中任何一个为 null,则尝试访问

values
上的
authority_email
属性将引发您所看到的异常。

要排查并解决问题:

  1. 检查对象初始化:确保在执行此行代码之前正确初始化

    page
    对象及其嵌套属性(
    prediction
    authority_email
    )。

  2. 空检查:在访问嵌套属性之前添加空检查。例如:

String authorityEmail;
if(page != null && page.prediction != null && page.prediction.authority_email != null) {
    authorityEmail = getCompleteJoinedContent(page.prediction.authority_email.values);
}
  1. 字段类型:该错误似乎与字段类型无关(

    EMail-Type-Field
    )。问题在于对象为空。但是,一旦解决了 null 问题,请确保
    getCompleteJoinedContent
    方法可以处理您传递给它的数据类型。

  2. 测试数据:如果在测试类执行期间发生此错误,请确保您的测试数据设置正确初始化

    page
    对象及其嵌套属性。

  3. 方法行为:检查

    getCompleteJoinedContent
    方法的行为。如果此方法不能正常处理空值,它也可能是错误的根源。

最后,由于您提到这是您第一次在 Apex 中进行开发,因此我建议您阅读 Salesforce 的 Apex 开发人员指南,尤其是有关错误处理和测试的部分。它提供了语言和最佳实践的全面概述。

© www.soinside.com 2019 - 2024. All rights reserved.