Créer des exceptions de commande de robot personnalisées

Vous pouvez utiliser la classe BotCommandException pour créer des exceptions de commande de robot personnalisées afin de signaler les erreurs. Vous pouvez les lever et les capturer dans vos méthodes. Avec les exceptions personnalisées, vous pouvez spécifier des messages d'erreur détaillés et avoir une gestion des erreurs plus personnalisée dans vos blocs de capture.

Exemple : Définir une BotCommandException personnalisée

Cet exemple définit une exception personnalisée appelée DemoException. Cette classe étend BotCommandException et met en œuvre plusieurs constructeurs en invoquant le nombre équivalent de constructeurs dans la super classe. Vous ne devez implémenter que les constructeurs que vous souhaitez utiliser, et vous pouvez ignorer le reste des constructeurs de la super classe (les classes Java n'héritent pas des constructeurs, d'où la nécessité de les réimplémenter).

package com.automationanywhere.botcommand.samples.exceptions;

import com.automationanywhere.botcommand.data.Value;
import com.automationanywhere.botcommand.exception.BotCommandException;

import java.util.Optional;

public class DemoException extends BotCommandException {
    public DemoException(String message, Throwable cause) {
        super(message, cause);
    }

    public DemoException(String message) {
        super(message);
    }

    public DemoException(Throwable cause) {
        super(cause);
    }

    public DemoException(String message, Throwable cause, Optional<Value> outputVariables) {
        super(message, cause, outputVariables);
    }
}

De nombreux constructeurs de la classe BotCommandException acceptent un objet java.lang.Throwable comme argument. Vous pouvez implémenter des constructeurs similaires et passer des objets Throwable (généralement d'autres objets d'exception) à vos exceptions personnalisées lorsque vous souhaitez que votre exception personnalisée inclue l'exception qui l'a provoquée.

L'exemple ci-dessous montre comment utiliser l'exception que vous avez définie dans l'exemple précédent.

    public static boolean checkRecordsExist(Connection con, String query)
    	    throws SQLException {
			
    	    Statement stmt = null;
    	    try {
    	        stmt = con.createStatement();
    	        ResultSet rs = stmt.executeQuery(query);
    	        rs.last();
    	        if(rs.getRow() > 0)
    	        	return true;
    	    } catch (SQLException e ) {
    	        throw new DemoException("Problem running statement", e);
    	    } finally {
    	        if (stmt != null) { stmt.close(); }
    	    }
    	    
    	    return false;
    	}

Si une exception est détectée, elle est rattrapée et une déclaration d'erreur est émise, comme indiqué dans l'exemple.