Erstellen von nutzerdefinierten Ausnahmen für Bot-Befehle

Sie können die Klasse BotCommandException verwenden, um nutzerdefinierte Ausnahmen für Bot-Befehle für Fehlerberichte zu erstellen. Diese Ausnahmen können Sie in Ihren Methoden auslösen und abfangen. Mit nutzerdefinierten Ausnahmen können Sie detaillierte Fehlermeldungen angeben und die Fehlerbehandlung in Ihren Catch-Blöcken individuell anpassen.

Beispiel: Definieren einer nutzerdefinierten BotCommandException

Dieses Beispiel definiert eine nutzerdefinierte Ausnahme namens DemoException. Diese Klasse erweitert BotCommandException und implementiert mehrere Konstruktoren, indem sie die entsprechende Anzahl von Konstruktoren in der Superklasse aufruft. Sie müssen nur die Konstruktoren implementieren, die Sie zu verwenden beabsichtigen. Der Rest der Konstruktoren in der Superklasse kann ignoriert werden (Java-Klassen erben keine Konstruktoren, daher die Notwendigkeit, sie neu zu implementieren).

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

Viele Konstruktoren der BotCommandException-Klasse akzeptieren ein java.lang.Throwable-Objekt als Argument. Sie können ähnliche Konstruktoren implementieren und Throwable-Objekte (normalerweise andere Ausnahmeobjekte) an Ihre nutzerdefinierten Ausnahmen übergeben, wenn Sie möchten, dass nutzerdefinierte Ausnahme die Ausnahme enthält, die sie verursacht hat.

Das folgende Beispiel zeigt, wie Sie die Ausnahme verwenden können, die Sie im obigen Beispiel definiert haben.

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

Wenn eine Ausnahme gefunden wird, wird die Ausnahme abgefangen und durch eine Fehlermeldung, wie im Beispiel definiert, ersetzt.