Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编写一个好的接口来从特定技术中分离耦合。。。如何处理异常?_Java_Interface_Amazon Web Services_Decoupling - Fatal编程技术网

Java 编写一个好的接口来从特定技术中分离耦合。。。如何处理异常?

Java 编写一个好的接口来从特定技术中分离耦合。。。如何处理异常?,java,interface,amazon-web-services,decoupling,Java,Interface,Amazon Web Services,Decoupling,我想编写一个Java接口来从特定技术中分离,转发异常的最佳方式是什么。假设我想从Amazon SQS中分离出来的技术。AmazonSQS本质上是一种队列服务,我希望尽可能灵活,并且我希望可以选择使用RabbitMQ或其他队列服务轻松地替换SQS 以下是我目前掌握的情况: public interface QueueService { // URL of the Queue Server public void setURL(String url); public Strin

我想编写一个Java接口来从特定技术中分离,转发异常的最佳方式是什么。假设我想从Amazon SQS中分离出来的技术。AmazonSQS本质上是一种队列服务,我希望尽可能灵活,并且我希望可以选择使用RabbitMQ或其他队列服务轻松地替换SQS

以下是我目前掌握的情况:

public interface QueueService {

   // URL of the Queue Server
   public void setURL(String url); 
   public String getURL();

   public Msg getMessage() throws QueueServiceException;
   public void deleteMessage(String messageId) throws QueueServiceException;

}
getMessage的SQS实现可能相当简单,它只使用AmazonAWSJavaSDK,本质上是AmazonQS类的receiveMessage方法。以下是AWS Java SDK中此方法的签名:

  public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageRequest)  throws AmazonServiceException, AmazonClientException;
现在我的问题是在QueueService接口的实现中如何处理这些异常。。。我是否只捕获这些异常(特定于特定技术)并作为QueueServiceException重新抛出

try {
  messages = amazonSQS.receiveMessage(receiveMessageRequest).getMessages()
} catch(AmazonServiceException ase) {
      throw new QueueServiceException();
}
QueueServiceException是:

public class QueueServiceException extends Exception {

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

    public QueueServiceException(String message, Throwable cause){
        super(message, cause);

    }

}
有什么想法吗


干杯

你必须这样做。春天就是这样。基本上捕获特定于提供程序的异常并将其作为您的异常重新显示。

谢谢@Rob..刚刚编辑了QueueServiceException类。。。你怎么认为?这是正确的例外包装还是我做错了什么?是的,这就是我的想法。