• Apex: SOQL语句未查询到数据时的返回值


    今日发现很久以前的一段代码发生报错,疑惑不已。

    最近并没有修改这个Class, 怎么会突然报错呢~

    报错代码大致如下:

    List<Approval_Process__c> processes = [SELECT Id, Status__c FROM Approval_Process__c WHERE Stage__c = 'Collections' LIMIT 1];
    if (processes != null && processes[0].Status__c == 'Approved') {
      System.debug('test');
    } else {
      System.debug('test1');
    }
     
    报错在第二行,报错信息为List index out of bounds: 0 
     
    初看时表示我不李姐,这不明明判断这个List不为空了嘛!
     
    做了一些测试之后,发现自己还是太年轻啊T.T
     
    List<Approval_Process__c> processes = [SELECT Id, Status__c FROM Approval_Process__c WHERE Stage__c = 'Collections' LIMIT 1];
    System.debug(processes);
    Approval_Process__c c = [SELECT Id, Status__c FROM Approval_Process__c WHERE Stage__c = 'Collections' LIMIT 1];
    System.debug(processes);
     
    同样在没有符合条件的数据返回时,第一个debug将返回一个空List, 而第二debug将直接报错List has no rows for assignment to SObject
     
    所以我们并不能通过processes != null来进行判断是否有返回数据,
     
    而是要用!processes.isEmpty()
     
    Got it!
  • 相关阅读:
    规格说明书-----吉林1日游
    每周代码及工作总结(第九周)
    评论beta发布
    每周代码及工作总结(第八周)
    半年之后没啥意思,开个博客
    本周例行报告
    final发布评论Ⅱ
    课堂final发布
    本周例行报告
    回顾
  • 原文地址:https://www.cnblogs.com/clsriz/p/15845961.html
Copyright © 2020-2023  润新知