Crear excepciones de comandos de bot personalizadas

Puede utilizar la clase BotCommandException para crear una excepción de comando de bot personalizada para la generación de informes de errores. Puede lanzarla y capturarla en sus métodos. Las excepciones personalizadas le permiten especificar mensajes de error detallados y tener un manejo de errores más personalizado en sus bloques de captura.

Ejemplo: Defina una BotCommandException personalizada

Este ejemplo define una excepción personalizada llamada DemoException. Esta clase extiende BotCommandException e implementa varios constructos invocando la cantidad equivalente de constructores en la superclase. Solo necesita implementar los constructos que pretenda utilizar; el resto de los constructos de la superclase pueden ser ignorados (las clases Java no heredan constructos, de ahí la necesidad de reimplementarlos).

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);
    }
}

Muchos constructos de la clase BotCommandException aceptan un objeto java.lang.Throwable como argumento. Puede implementar constructos similares y pasar objetos Throwable (normalmente otros objetos de excepción) a sus excepciones personalizadas cuando quiera que su excepción personalizada incluya la excepción que la causó.

El siguiente ejemplo muestra cómo utilizar la excepción que ha definido en el ejemplo anterior.

    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 se encuentra una excepción, esta se capturará a través de una sentencia de error como se define en el ejemplo.