找不到SObject时该怎么办?

时间:2019-05-23 13:52:21

标签: apex soql custom-object

我正在尝试清空recycleBin。因此,我需要查询记录的现有SObjects。如果找到记录SObject的匹配项,则应该进行查询。否则,它不应该查询任何内容。返回类型是查询。 当SObject不存在时,我应该如何编写else部分而不会出现崩溃问题。

我想到了一个try catch块,其中try部分将包含

if(exists){query;}

并且catch部分将什么都不做,这意味着它是空的。那有意义吗? 您会提出什么建议?

    Boolean exists = Schema.getGlobalDescribe().containsKey(sObjectName);
 try {
       if(exists){
          return Database.getQueryLocator('SELECT Id FROM ' + sObjectName 
          +' WHERE isDeleted=true ALL ROWS');
       }
 }
 catch (QueryException ex) {
        // do nothing
 }

1 个答案:

答案 0 :(得分:0)

假设您有一个将返回Database.getQueryLocator

的方法
public Database.QueryLocator testMethod(String sObjectName )
{
    return Database.getQueryLocator('SELECT Id FROM ' + sObjectName 
    +' WHERE isDeleted=true ALL ROWS'); 
}

在调用方法之前检查sObject是否存在。

Boolean exists = Schema.getGlobalDescribe().containsKey(sObjectName);
if(exists)
{
   Database.QueryLocator ql = testMethod(String sObjectName);  
}