2017-10-12 3 views

Répondre

0

Non, désolé. Vous ne pouvez pas les attraper de la même manière que vous ne pouvez pas attraper l'exception causée par System.assert().

https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_gov_limits.htm

Parce que Apex fonctionne dans un environnement mutualisée, le moteur d'exécution Apex applique strictement les limites pour assurer que le code Apex emballement ou processus ne monopolisent pas les ressources partagées. Si un code Apex dépasse une limite, le gouverneur associé émet une exception d'exécution qui ne peut pas être traitée.

+0

Merci !! .... En fait, je veux afficher un message d'erreur sur l'exception de limite de temps cpu Apex à l'utilisateur. Alors, y a-t-il un autre moyen de le faire? – Anonymous

+0

Pas dans le contexte où cela se produit, SF affichera leur propre texte noir laid sur erreur fatale de fond blanc. Mais si vous avez un autre contexte (peut-être que ce n'était pas une page VF mais un travail par lots ou un gestionnaire de courrier électronique entrant), vous pourriez essayer d'interroger la table AsyncApexJob. Batch & @future échoue là-bas, même si aucune journalisation de débogage n'est activée. Les exceptions InboundEmailHandler peuvent être transférées vers une boîte aux lettres dédiée. – eyescream

0

Vous ne pouvez pas détecter l'exception de limite de temps de l'apex CPU, mais dans votre code, vous pouvez toujours vérifier les limites, reportez-vous à la documentation here. Dans votre cas, vous pouvez vérifier Limits.getCpuTime() que vous pouvez appeler après quelques itérations ou chaque fois qu'il vous semble approprié et si vous trouvez le temps proche de la limite, vous pouvez simplement arrêter l'exécution et transmettre votre propre message d'erreur personnalisé en ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,'Error: Your Custom Error Message'))