Chcem napísať rozhranie Java, ktoré sa má odblokovaťz konkrétnej technológie, aký je najlepší spôsob odovzdávania výnimiek. Povedzme, že technológia, ktorú chcem de-párovať, je Amazon SQS. Amazon SQS je v podstate služba vo fronte a ja chcem byť čo najpružnejší a chcem mať možnosť ľahko nahradiť SQS pomocou RabbitMQ alebo inej služby vo fronte.
Tu je to, čo mám zatiaľ:
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;
}
Implementácia funkcie getMessage SQS je pravdepodobnecelkom jednoduché, iba používa Amazon AWS Java SDK a v podstate metódu prijímania správ triedy AmazonSQS. Tu je podpis tejto metódy v AWS Java SDK:
public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageRequest) throws AmazonServiceException, AmazonClientException;
Teraz mám otázku, čo s nimi urobímVýnimky pri implementácii rozhrania QueueService ... zachytím iba tieto výnimky (ktoré sú špecifické pre konkrétnu technológiu) a hádam ako QueueServiceException?
try {
messages = amazonSQS.receiveMessage(receiveMessageRequest).getMessages()
} catch(AmazonServiceException ase) {
throw new QueueServiceException();
}
Výnimka QueueServiceException je:
public class QueueServiceException extends Exception {
public QueueServiceException (String message){
super(message);
}
public QueueServiceException(String message, Throwable cause){
super(message, cause);
}
}
Nejaké nápady ?
Na zdraví!
odpovede:
2 pre odpoveď č. 1Budeš musieť urobiť výnimočné balenie, Jar to robí. V zásade chytte výnimku špecifickú pre poskytovateľa a znova ho odošlite ako svoju výnimku.