首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将IOException作为自定义运行时异常Java8接受

如何将IOException作为自定义运行时异常Java8接受
EN

Stack Overflow用户
提问于 2019-04-17 12:07:53
回答 1查看 592关注 0票数 0

我正在使用Apache的PdfBox库,我注意到几乎所有的东西都抛出了一个IOException,考虑到大多数IOExceptions实际上应该是非法的状态异常,这是相当恼人的,但似乎apache希望客户处理它,所以他们强制他们作为检查异常。不管怎样..。

我的问题是,如何将IOException封装到扩展RuntimeException的自定义异常中,以便更容易处理?

示例:

代码语言:javascript
运行
复制
private final PDDocument document;
private final PDPage page;
private final PDFont font;

public PdfBoxWrapper(PDDocument document, PDPage page, PDFont font)
{
    this.document = document;
    this.page = page;
    this.font = Objects.isNull(font) ? PDType1Font.HELVETICA : font;

    this.document.addPage(this.page);

    try 
    {
        this.canvas = new PDPageContentStream(this.document, this.page);
    } 

    catch (IOException exception) {
        logger.error(exception.getMessage());
    }
}

请注意,我必须将PDPageContentStream包装在一个try catch中。如何将PdfBox中的IOException包装为PdfBoxIllegalStateException?

如下图所示:

代码语言:javascript
运行
复制
public class PdfBoxIllegalStateException extends RuntimeException
{
    public PdfBoxIllegalStateException(String message)
    {
        super(message);
    }

    public PdfBoxIllegalStateException(String message, Throwable cause)
    {
        super(message, cause);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-17 12:12:32

您可以捕获IOException,然后将其包装在PdfBoxIllegalStateException中,然后再次抛出它。

代码语言:javascript
运行
复制
private final PDDocument document;
private final PDPage page;
private final PDFont font;

public PdfBoxWrapper(PDDocument document, PDPage page, PDFont font)
{
    this.document = document;
    this.page = page;
    this.font = Objects.isNull(font) ? PDType1Font.HELVETICA : font;

    this.document.addPage(this.page);

    try 
    {
        this.canvas = new PDPageContentStream(this.document, this.page);
    } 

    catch (IOException exception) {
        logger.error(exception.getMessage());
        throw new PdfBoxIllegalStateException(exception);
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55719728

复制
相关文章

相似问题

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