首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包装第三方库时的异常

包装第三方库时的异常
EN

Stack Overflow用户
提问于 2015-06-28 13:01:00
回答 1查看 1.9K关注 0票数 2

我遇到了一个小问题,当我做一个简单的API的后端代码注册和登录在一个网站与一个FIDO设备。

基本上,我正在包装yubico u2f库,使其更易于使用。我所遇到的问题是,除了异常,我想从我的API向后端服务器抛出com.yubico.u2f.exceptions.NoEligableDevicesException异常,但我不希望我的用户(后端开发人员)看到或导入yubico库。

因此,我的解决方案是将该异常包装如下:

代码语言:javascript
复制
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

有更好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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子类。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31100081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档