Java 使用技巧-如何抛出一个异常并捕获它

工作中需要使用Java编写插件,但并不是主要技术栈,所以简单地学习记录一下。

背景#

与Javascript不同,Java中类型的概念非常强,函数中不能返回与声明不同类型的返回值。
例如下面函数是ObjectNode类型,返回类型只能是ObjectNode类型。
下面这段代码需要做两个判断,一是判断帧头帧尾是否符合,二是判断校验和是否正确,我刚开始编写时,没有关注判错的处理逻辑,都是简单地返回的null
在测试中,因为一条帧里面的校验码算错了,在测试解码的时候一直报错,终于发现了问题。

如何抛出一个异常并捕获#

使用throw关键字 抛出一个Exception对象,异常信息包裹在括号中。使用try...catch来捕获异常,如下所示。

public ObjectNode decode(byte[] binaryData) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        try {
            if (Utility.First(binaryData) == 0x68 && Utility.Last(binaryData) == 0x16) {
                // 获取校验码
                byte cs = Utility.First(binaryData, decoder.GetLength() + 12);
                if (cs == Utility.Sum(Utility.Take(binaryData, decoder.GetLength() + 12))) {
                    // 若校验成功
                    // code...
                } else {
                    // 校验失败,抛出异常,在catch中处理
                    throw new Exception("校验失败");
                }
            } else {
                throw new Exception("帧头或帧尾不匹配");
            }
        } catch (Exception e) {
            ObjectNode root = mapper.createObjectNode();
            System.out.println(e);
            root.put("error", e.getMessage());
            return root;
        }

作者:sq800

出处:https://www.cnblogs.com/sq800/p/16659176.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   sq800  阅读(694)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示