사용자 정의 Bot 명령 예외 만들기

BotCommandException 클래스를 사용하여 오류 보고를 위한 사용자 정의 Bot 명령 예외를 만들 수 있습니다. 메소드에서 예외를 Throw하고 Catch할 수 있습니다. 사용자 정의 예외를 사용하면 자세한 오류 메시지를 지정하고 Catch 블록에서 더 많은 사용자 정의 오류를 처리할 수 있습니다.

예: 사용자 정의 BotCommandException 정의

이 예는 DemoException이라는 사용자 지정 예외를 정의합니다. 이 클래스는 BotCommandException을 확장하고 수퍼 클래스에서 동등한 양의 생성자를 호출하여 여러 생성자를 구현합니다. 사용할 생성자만 구현하면 되고 수퍼 클래스의 나머지 생성자는 무시할 수 있습니다(Java 클래스는 생성자를 상속하지 않으므로 생성자를 다시 구현해야 함).

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

BotCommandException 클래스의 많은 생성자는 java.lang.Throwable 객체를 인수로 받습니다. 사용자 지정 예외를 발생시킨 예외를 포함시키려는 경우 유사한 생성자를 구현하고 Throwable 객체(일반적으로 기타 예외 객체)를 전달할 수 있습니다.

다음 예제는 이전 샘플에서 정의한 예외를 사용하는 방법을 보여줍니다.

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

예외가 발견될 경우 예제에 정의된 대로 오류 구문을 통해 예외를 Catch합니다.