标签:Exception Java ObjectNode 抛出 捕获 binaryData 校验 Utility
工作中需要使用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;
}
标签:Exception,Java,ObjectNode,抛出,捕获,binaryData,校验,Utility 来源: https://www.cnblogs.com/sq800/p/16659176.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。