Criar exceções de comando de bot personalizadas

Você pode usar a classe BotCommandException para criar exceções de comando de bot personalizadas para relatórios de erros. Com as exceções personalizadas, você pode lançá-las e capturá-las em seus métodos. Com exceções personalizadas, você pode especificar mensagens de erro detalhadas e obter um tratamento de erros mais personalizado nos blocos catch.

Exemplo: Definir uma BotCommandException personalizada

Este exemplo define uma exceção personalizada chamada DemoException. Esta classe estende BotCommandException e implementa vários construtores ao chamar a quantidade equivalente de construtores na superclasse. Você só precisa implementar os construtores que deseja usar e pode ignorar o restante dos construtores da superclasse (classes Java não herdam construtores, portanto você deve reimplementá-los).

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

Muitos construtores da classe BotCommandException aceitam um objeto java.lang.Throwable como argumento. Você pode implementar construtores semelhantes e passar objetos Throwable (geralmente outros objetos de exceção) para as exceções personalizadas quando quiser que sua exceção personalizada inclua a exceção que a causou.

O exemplo a seguir mostra como usar a exceção definida no exemplo 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;
    	}

Se uma exceção for encontrada, isso capturará a exceção, por meio de uma instrução de erro, conforme definido no exemplo.