Java 编写一个好的接口来从特定技术中分离耦合。。。如何处理异常?
我想编写一个Java接口来从特定技术中分离,转发异常的最佳方式是什么。假设我想从Amazon SQS中分离出来的技术。AmazonSQS本质上是一种队列服务,我希望尽可能灵活,并且我希望可以选择使用RabbitMQ或其他队列服务轻松地替换SQS 以下是我目前掌握的情况: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
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类。。。你怎么认为?这是正确的例外包装还是我做错了什么?是的,这就是我的想法。