Slightly fix the broken error handling

This commit is contained in:
roblabla 2015-09-11 22:12:20 +00:00
parent 86f1f23053
commit 2b98c09fba
2 changed files with 22 additions and 6 deletions

View File

@ -109,7 +109,10 @@ function readContainer(buffer, offset, typeArgs, rootNode) {
tryCatch(() => {
readResults = this.read(buffer, offset, typeArgs[index].type, rootNode);
}, (e) => {
addErrorField(e, index);
if (typeArgs && typeArgs[index] && typeArgs[index].name)
addErrorField(e, typeArgs[index].name);
else
addErrorField(e, "unknown");
throw e;
});
results.size += readResults.size;
@ -127,7 +130,10 @@ function writeContainer(value, buffer, offset, typeArgs, rootNode) {
tryCatch(() => {
offset = this.write(value[typeArgs[index].name], buffer, offset, typeArgs[index].type, rootNode);
}, (e) => {
addErrorField(e, index);
if (typeArgs && typeArgs[index] && typeArgs[index].name)
addErrorField(e, typeArgs[index].name);
else
addErrorField(e, "unknown");
throw e;
});
}
@ -146,7 +152,10 @@ function sizeOfContainer(value, typeArgs, rootNode) {
else
size += this.sizeOf(value[typeArgs[index].name], typeArgs[index].type, rootNode);
}, (e) => {
addErrorField(e, index);
if (typeArgs && typeArgs[index] && typeArgs[index].name)
addErrorField(e, typeArgs[index].name);
else
addErrorField(e, "unknown");
throw e;
});
}

View File

@ -71,12 +71,13 @@ function createPacketBuffer(packetId, state, params, isServer) {
assert.notEqual(packetId, undefined);
var packet = get(packetId, state, !isServer);
var packetName = packetNames[state][!isServer ? 'toServer' : 'toClient'][packetId];
assert.notEqual(packet, null);
packet.forEach(function(fieldInfo) {
tryCatch(() => {
length += proto.sizeOf(params[fieldInfo.name], fieldInfo.type, params);
}, (e) => {
e.message = "sizeOf error for " + e.field + " : " + e.message;
e.message = "sizeOf error for " + packetName + "." + e.field + " : " + e.message;
throw e;
});
});
@ -93,7 +94,7 @@ function createPacketBuffer(packetId, state, params, isServer) {
tryCatch(() => {
offset = proto.write(value, buffer, offset, fieldInfo.type, params);
}, (e) => {
e.message = "Write error for " + e.field + " : " + e.message;
e.message = "Write error for " + packetName + "." + e.field + " : " + e.message;
throw e;
});
});
@ -136,10 +137,16 @@ function parsePacketData(buffer, state, isServer, packetsToParse = {"packet": tr
debug("read packetId " + state + "." + packetName + " (0x" + packetId.toString(16) + ")");
}
var packetName = packetNames[state][!isServer ? 'toClient' : 'toServer'][packetId];
var i, fieldInfo, readResults;
for(i = 0; i < packetInfo.length; ++i) {
fieldInfo = packetInfo[i];
readResults = proto.read(buffer, cursor, fieldInfo.type, results);
tryCatch(() => {
readResults = proto.read(buffer, cursor, fieldInfo.type, results);
}, (e) => {
e.message = "Read error for " + packetName + "." + e.field + " : " + e.message;
throw e;
});
if(readResults === null)
throw new Error("A reader returned null. This is _not_ normal");
if(readResults.error)