问题记录

1.自定义异常处理问题

封装的接口幂等性工具使用aop+自定义注解实现,在执行切入点部分的异常捕获出现问题。
问题代码:

            try {
                return pjp.proceed();
            }catch (Throwable throwable) {
                log.info("系统异常", throwable);
                String msg = "系统异常";
                if(StringUtil.isNotEmpty(throwable.getMessage())){
                    msg =  throwable.getMessage();
                }
                throw new RuntimeException(msg);
           }

问题: Object proceed() throws Throwable; proceed方法抛出的是异常的顶级父类Throwable
直接对Throwable 进行捕获会将系统中抛出的业务异常,也转换成了RuntimeException
统一异常处理中配置了 针对业务异常返回给前端特定的 code的Resutlt

解决:应该在捕获Throwable 之前,对业务异常进行捕获

            try {              
                return pjp.proceed();
            } catch(ServiceException e){
                throw e;
            }catch (Throwable throwable) {
                log.info("系统异常", throwable);
                String msg = "系统异常";
                if(StringUtil.isNotEmpty(throwable.getMessage())){
                    msg =  throwable.getMessage();
                }
                throw new RuntimeException(msg);
            }

2.itext生成PDF问题

电子签约项目需要在后台生成PDF使用的工具包是

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.12</version>
        </dependency>

期间遇到的问题就是产品设计的PDF模板上需要 显示

复选框勾选字符,使用PDF的html组件过于繁琐

通过特殊字体实现,百度得知字体为 Windings2 ,通过下载该字体ttf

来加载字体就可任意通过纯文本来实现

BaseFont symbol = BaseFont.createFont(
                    "static/font/wingdings2.ttf", com.lowagie.text.pdf.BaseFont.IDENTITY_H, com.lowagie.text.pdf.BaseFont.NOT_EMBEDDED);
posted @ 2020-09-15 11:17  ShinyRou  阅读(129)  评论(0编辑  收藏  举报