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


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

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

报错代码大致如下:

List 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 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(System.debug(processes););   同样在没有符合条件的数据返回时,第一个debug将返回一个空List, 而第二debug将直接报错List has no rows for assignment to SObject   所以我们并不能通过processes != null来进行判断是否有返回数据,   而是要用!processes.isEmpty()   Got it!