我遇到了一个小问题,当我做一个简单的API的后端代码注册和登录在一个网站与一个FIDO设备。
基本上,我正在包装yubico u2f库,使其更易于使用。我所遇到的问题是,除了异常,我想从我的API向后端服务器抛出com.yubico.u2f.exceptions.NoEligableDevicesException异常,但我不希望我的用户(后端开发人员)看到或导入yubico库。
因此,我的解决方案是将该异常包装如下:
package com.github.dkanellis.fikey.exceptions;
import com.yubico.u2f.data.DeviceRegistration;
public class NoEligableDevicesException extends com.yubico.u2f.exceptions.NoEligableDevicesException {
public NoEligableDevicesException(Iterable<? extends DeviceRegistration> devices, String message, Throwable cause) {
super(devices, message, cause);
}
public NoEligableDevicesException(Iterable<? extends DeviceRegistration> devices, String message) {
super(devices, message);
}
}然后throw给用户包装yubico异常的异常。问题是,这增加了代码的复杂性,每次发生com.yubico.u2f.exceptions.NoEligableDevicesException异常时,我都必须捕获它并抛出com.github.dkanellis.fikey.exceptions.NoEligableDevicesException。
有更好的方法吗?
发布于 2015-06-28 13:12:32
问题是,这增加了代码的复杂性,每次发生com.yubico.u2f.exceptions.NoEligableDevicesException异常时,我都必须捕获它并抛出com.github.dkanellis.fikey.exceptions.NoEligableDevicesException.。
这不是问题。这实际上是在应用程序的不同层之间传播Exception的推荐方法。最近,我遇到了这关于传播Exception的优秀文章。(这是一篇.Net文章,但仍然适用于Java)
将实际的Exception封装到您自己的Exception子类中,可以灵活地更改API的基础依赖关系,而不会破坏客户端代码。客户机代码继续依赖于您的Exception子类。
https://stackoverflow.com/questions/31100081
复制相似问题