Что делать, если SObject не найден? - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь очистить корзину.Таким образом, мне нужно запросить существующие SObjects записей.Если совпадение записей SObject Name найдено, запрос должен быть выполнен.Иначе это просто не должно ничего запрашивать.Тип возврата - это запрос.Как я должен написать остальную часть, не сталкиваясь с проблемами, когда SObject не существует.

Я подумал о блоке 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 голосов
/ 24 мая 2019

Предполагая, что у вас есть метод, который возвратит 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);  
}
...