throw e 和 return 的浅显理解

1.Throw E Return

  1. 在一个try catch中
    在这里插入图片描述
  2. 使用throw e 或者return 爆红都会取消
    在这里插入图片描述
  3. throw e 和 e.printStackTrace();的区别
throw e             作用于方法内,是抛出异常,会中断程序,后面的代码都不执行了
throws              作用于方法上,用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,throws 对应的异常真的有发生不会终止程序,谁调用我我就抛给谁
e.printStackTrace() 是输出错误日志,并不中断程序

总结:

return的作用很简单,意思是方法直接返回了,该方法不在向下执行。但是调用该方法的方法继续执行。

而throw指抛出异常,并且该方法以及调用该方法的一切方法将不会向下执行。但是,这个异常却会一直向上抛出,如直到有上层方法使用了try catch进行捕获这个异常,则catch方法块中的命令都会被执行

2.关于控制台打印

这里使用一个BigDecimal 除数不能为0的一个异常

  1. 正常抛出异常
    在这里插入图片描述
  2. 去除 e.printStackTrace();
    在这里插入图片描述
  3. 使用lombok的注解@Slf4j输出异常
log.info("计算成功");
log.error("计算失败",e); //带e也只是打印,不同throw e 会中断程序

在这里插入图片描述

### 解决 Java JWT `parseClaimsJws` 方法报错 当遇到 `parseClaimsJws` 方法调用失败的情况时,通常是因为使用的库版本与 JDK 版本不兼容或是缺少必要的配置。具体来说,在较新的 JDK 版本(如 JDK 17)下使用某些旧版的 JWT 库可能会引发此类异常。 #### 使用最新版本依赖项 确保项目中引入了最新的 `jjwt` 依赖包。对于 Maven 构建工具而言,可以在 pom.xml 文件内添加如下声明: ```xml <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.11.5</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>0.11.5</version> <scope>runtime</scope> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is preferred --> <version>0.11.5</version> <scope>runtime</scope> </dependency> ``` 上述代码片段展示了如何通过更新依赖来解决问题[^4]。 #### 正确初始化 JwtParser 实例 创建并配置好用于解析 Token 的对象非常重要。下面是一个完整的例子展示怎样安全地处理已签名的 JSON Web Tokens (JWT): ```java import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.security.Keys; public class JwtExample { private static final String SECRET_KEY = "your-secret-key-must-be-at-least-256-bits-long"; public Claims parseToken(String token) throws Exception { try { return Jwts.parserBuilder() .setSigningKey(Keys.hmacShaKeyFor(SECRET_KEY.getBytes())) .build() .parseClaimsJws(token) .getBody(); } catch (Exception e) { throw new RuntimeException("Invalid JWT token", e); } } } ``` 这段代码说明了应当如何构建一个能够成功执行 `parseClaimsJws()` 调用的方法。 #### 验证密钥的一致性 如果仍然收到关于签名验证错误的信息,则可能是由于服务器端客户端之间共享的秘密密钥不同步所引起的。务必确认两端都采用了相同的加密材料来进行令牌的签发与校验操作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值