From adf834a4e9fb1a6ee9dfbc68ba2c64d8e51b327d Mon Sep 17 00:00:00 2001 From: free will <2647778488@qq.com> Date: Wed, 24 Mar 2021 11:22:23 +0800 Subject: [PATCH] fixed error handle --- src/main/java/component/Identifier.java | 6 +---- src/main/java/component/IdentifierField.java | 6 +---- src/main/java/component/MutableField.java | 6 +---- src/main/java/component/SignatureField.java | 28 ++++++-------------- src/main/java/component/SignatureInfo.java | 14 +++------- src/main/java/encoding/SelfEncodingBase.java | 6 +++-- src/main/java/packet/CPacket.java | 18 ++++--------- src/main/java/packet/Data.java | 8 +++--- src/main/java/packet/Interest.java | 2 +- src/test/java/others/TestCallBack.java | 4 ++- 10 files changed, 31 insertions(+), 67 deletions(-) diff --git a/src/main/java/component/Identifier.java b/src/main/java/component/Identifier.java index d769e17..5040044 100644 --- a/src/main/java/component/Identifier.java +++ b/src/main/java/component/Identifier.java @@ -193,11 +193,7 @@ public class Identifier implements TlvComponentBase, IEncodingAble { // 编码 TLV-VALUE for (int i = 0; i < components.length(); i++) { int tmpLen= 0; - try { - tmpLen = components.getElement(i).wireEncode(encoder); - } catch (EncoderException e) { - throw new ComponentException("Identifier.wireEncode: "+e.getMessage()); - } + tmpLen = components.getElement(i).wireEncode(encoder); if(tmpLen<=0){ return -1; } diff --git a/src/main/java/component/IdentifierField.java b/src/main/java/component/IdentifierField.java index 0ab43df..f945bfe 100644 --- a/src/main/java/component/IdentifierField.java +++ b/src/main/java/component/IdentifierField.java @@ -149,11 +149,7 @@ public class IdentifierField implements TlvComponentBase, IEncodingAble { // 反向遍历,可以保证解码的时候正向输出 for (int i = this.identifiers.length()-1; i >= 0; i--) { int tmplen= 0; - try { - tmplen = this.identifiers.getElement(i).wireEncode(encoder); - } catch (EncoderException e) { - throw new ComponentException("IdentifierField.wireEncode: "+e.getMessage()); - } + tmplen = this.identifiers.getElement(i).wireEncode(encoder); if(tmplen<=0){ return -1; } diff --git a/src/main/java/component/MutableField.java b/src/main/java/component/MutableField.java index 7f931b3..b01fcf4 100644 --- a/src/main/java/component/MutableField.java +++ b/src/main/java/component/MutableField.java @@ -38,11 +38,7 @@ public class MutableField implements TlvComponentBase,IEncodingAble { return -1; } totalLength+=tmplen; - try { - tmplen=this.mutableProtectField.wireEncode(encoder); - } catch (EncoderException e) { - throw new ComponentException("MutableField.wireEncode: "+e.getMessage()); - } + tmplen=this.mutableProtectField.wireEncode(encoder); if(tmplen<=0){ return -1; } diff --git a/src/main/java/component/SignatureField.java b/src/main/java/component/SignatureField.java index 8fd1e19..dd441d8 100644 --- a/src/main/java/component/SignatureField.java +++ b/src/main/java/component/SignatureField.java @@ -113,20 +113,12 @@ public class SignatureField implements TlvComponentBase, IEncodingAble { for(int i=signatures.length()-1;i>=0;i--){ Signature newSignature=signatures.getElement(i); int tmplen= 0; - try { - tmplen = newSignature.getSigValue().wireEncode(encoder); - } catch (EncoderException e) { - throw new ComponentException("SignatureField.wireEncode: "+e.getMessage()); - } + tmplen = newSignature.getSigValue().wireEncode(encoder); if(tmplen<=0){ return -1; } totalLength+=tmplen; - try { - tmplen=newSignature.getSigInfo().wireEncode(encoder); - } catch (EncoderException e) { - throw new ComponentException("SignatureField.wireEncode: "+e.getMessage()); - } + tmplen=newSignature.getSigInfo().wireEncode(encoder); if(tmplen<=0){ return -1; } @@ -192,16 +184,12 @@ public class SignatureField implements TlvComponentBase, IEncodingAble { for (int i = 0; i < subElementNum; i+=2) { // 第奇数个子 TLV 解析为 SignatureInfo SignatureInfo signatureInfo= null; - try { - signatureInfo = new SignatureInfo(subElements.getBlock(i)); - // 第偶数个子 TLV 解析为 SignatureValue - SignatureValue signatureValue=new SignatureValue(subElements.getBlock(i+1)); - // 构造Signature - Signature signature=new Signature(signatureInfo,signatureValue); - signatureContainer.addElement(signature); - } catch (VlIntException e) { - throw new ComponentException("SignatureField.wireDecode: "+e.getMessage()); - } + signatureInfo = new SignatureInfo(subElements.getBlock(i)); + // 第偶数个子 TLV 解析为 SignatureValue + SignatureValue signatureValue=new SignatureValue(subElements.getBlock(i+1)); + // 构造Signature + Signature signature=new Signature(signatureInfo,signatureValue); + signatureContainer.addElement(signature); } // 赋值 signatures.clear(); diff --git a/src/main/java/component/SignatureInfo.java b/src/main/java/component/SignatureInfo.java index 68b8a7a..e75b6d6 100644 --- a/src/main/java/component/SignatureInfo.java +++ b/src/main/java/component/SignatureInfo.java @@ -117,11 +117,7 @@ public class SignatureInfo implements TlvComponentBase, IEncodingAble { totalLength+=tmplen; } int tmplen= 0; - try { - tmplen = this.signatureType.wireEncode(encoder); - } catch (EncoderException e) { - throw new ComponentException("SignatureInfo.wireEncode: "+e.getMessage()); - } + tmplen = this.signatureType.wireEncode(encoder); if(tmplen<=0){ return -1; } @@ -185,12 +181,8 @@ public class SignatureInfo implements TlvComponentBase, IEncodingAble { } switch (type){ case TLV.TlvSignatureType: - try { - if(!this.signatureType.wireDecode(cacheBlock)){ - return false; - } - } catch (VlIntException e) { - throw new ComponentException("SignatureInfo.wireDecode: "+e.getMessage()); + if(!this.signatureType.wireDecode(cacheBlock)){ + return false; } findSignatureType=true; case TLV.TlvKeyLocator: diff --git a/src/main/java/encoding/SelfEncodingBase.java b/src/main/java/encoding/SelfEncodingBase.java index c125078..411091e 100644 --- a/src/main/java/encoding/SelfEncodingBase.java +++ b/src/main/java/encoding/SelfEncodingBase.java @@ -1,6 +1,8 @@ package encoding; import component.CanBePrefix; +import component.ComponentException; +import packet.PacketException; /* * @Author: Wang Feng @@ -44,7 +46,7 @@ public class SelfEncodingBase { * @param iEncodingAble * @return */ - public Block selfWireEncode(IEncodingAble iEncodingAble) throws EncoderException, BlockException { + public Block selfWireEncode(IEncodingAble iEncodingAble) throws EncoderException, BlockException, ComponentException, PacketException { // this.setiEncodingAble(iEncodingAble); if((this.rawBlock!=null)&&this.rawBlock.isValid()){ return this.rawBlock; @@ -64,7 +66,7 @@ public class SelfEncodingBase { * @param iEncodingAble * @return */ - private Block easyEncoder(IEncodingAble iEncodingAble) throws EncoderException, BlockException { + private Block easyEncoder(IEncodingAble iEncodingAble) throws PacketException, ComponentException, EncoderException, BlockException { Encoder encoder=new Encoder(); // 首先测量目标 TLV 的大小 diff --git a/src/main/java/packet/CPacket.java b/src/main/java/packet/CPacket.java index c00420b..984efc9 100644 --- a/src/main/java/packet/CPacket.java +++ b/src/main/java/packet/CPacket.java @@ -61,7 +61,7 @@ public class CPacket implements InteractWithField, IEncodingAble { Block block= null; try { block = new SelfEncodingBase().selfWireEncode(this.ttl); - } catch (EncoderException | BlockException e) { + } catch (EncoderException | BlockException | ComponentException e) { throw new PacketException("CPacket.fillDataToFields: "+e.getMessage()); } if(block==null){ @@ -74,7 +74,7 @@ public class CPacket implements InteractWithField, IEncodingAble { this.minPacket.readOnlyField.clearBlocks(); try { block=new SelfEncodingBase().selfWireEncode(this.payload); - } catch (EncoderException | BlockException e) { + } catch (EncoderException | BlockException | ComponentException e) { throw new PacketException("CPacket.fillDataToFields: "+e.getMessage()); } if(block==null){ @@ -151,11 +151,7 @@ public class CPacket implements InteractWithField, IEncodingAble { // 指定包类型 this.minPacket.packetType=new VlInt(TLV.TlvPacketMINCommon); - try { - return this.minPacket.wireEncode(encoder); - } catch (EncoderException e) { - throw new PacketException("CPacket.wireEncode: "+e.getMessage()); - } + return this.minPacket.wireEncode(encoder); } /** @@ -165,12 +161,8 @@ public class CPacket implements InteractWithField, IEncodingAble { */ @Override public boolean wireDecode(Block block) throws PacketException { - try { - if(!this.minPacket.wireDecode(block)){ - return false; - } - } catch (VlIntException e) { - throw new PacketException("CPacket.wireDecode: "+e.getMessage()); + if(!this.minPacket.wireDecode(block)){ + return false; } return this.extraDataFromFields(); } diff --git a/src/main/java/packet/Data.java b/src/main/java/packet/Data.java index a6310fa..d3af088 100644 --- a/src/main/java/packet/Data.java +++ b/src/main/java/packet/Data.java @@ -87,7 +87,7 @@ public class Data implements IEncodingAble,InteractWithField { Block block= null; try { block = new SelfEncodingBase().selfWireEncode(this.congestionMark); - } catch (EncoderException | BlockException e) { + } catch (EncoderException | BlockException | ComponentException e) { throw new PacketException("Data.fillDataToFields: "+e.getMessage()); } if(block==null){ @@ -111,7 +111,7 @@ public class Data implements IEncodingAble,InteractWithField { if(this.freshnessPeriod.isInitial()){ try { block=new SelfEncodingBase().selfWireEncode(this.freshnessPeriod); - } catch (EncoderException | BlockException e) { + } catch (EncoderException | BlockException | ComponentException e) { throw new PacketException("Data.fillDataToFields: "+e.getMessage()); } if(block==null){ @@ -124,7 +124,7 @@ public class Data implements IEncodingAble,InteractWithField { if(this.nackHeader.isInitial()){ try { block=new SelfEncodingBase().selfWireEncode(this.nackHeader); - } catch (EncoderException | BlockException e) { + } catch (EncoderException | BlockException | ComponentException e) { throw new PacketException("Data.fillDataToFields: "+e.getMessage()); } if(block==null){ @@ -136,7 +136,7 @@ public class Data implements IEncodingAble,InteractWithField { // Payload try { block=new SelfEncodingBase().selfWireEncode(this.payload); - } catch (EncoderException | BlockException e) { + } catch (EncoderException | BlockException | ComponentException e) { throw new PacketException("Data.fillDataToFields: "+e.getMessage()); } if(block==null){ diff --git a/src/main/java/packet/Interest.java b/src/main/java/packet/Interest.java index 2b06e75..80276d5 100644 --- a/src/main/java/packet/Interest.java +++ b/src/main/java/packet/Interest.java @@ -196,7 +196,7 @@ public class Interest implements InteractWithField,IEncodingAble{ return true; - }catch (EncoderException | BlockException e){ + }catch (EncoderException | BlockException | ComponentException e){ throw new PacketException("Interest.fillDataToFields: "+e.getMessage()); } } diff --git a/src/test/java/others/TestCallBack.java b/src/test/java/others/TestCallBack.java index e9d618d..48a3ae5 100644 --- a/src/test/java/others/TestCallBack.java +++ b/src/test/java/others/TestCallBack.java @@ -1,10 +1,12 @@ package others; import component.CanBePrefix; +import component.ComponentException; import encoding.Block; import encoding.BlockException; import encoding.EncoderException; import encoding.SelfEncodingBase; +import packet.PacketException; /* * @Author: Wang Feng @@ -14,7 +16,7 @@ import encoding.SelfEncodingBase; * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 */ public class TestCallBack { - public static void main(String[] args) throws EncoderException, BlockException { + public static void main(String[] args) throws EncoderException, BlockException, PacketException, ComponentException { CanBePrefix canBePrefix=new CanBePrefix(); Block block=new SelfEncodingBase().selfWireEncode(canBePrefix); }