[thrift] gut Erlang exception handling
Summary: * move type field to tException from subclasses
* add backtrace to tException
* add oop:is_a
* on exit, wrap exceptions in {thrift_exception, E} ... otherwise can't distinguish e.g. exit:{{tBinProtException, {tException, ...}}, Stack} vs. exit:{tBinProtException, {tException, ...} -- I hate erlang
* all throws/exits to tException:throw which does the wrapping described above
Reviewed By: eletuchy
Test Plan: been using this code on my live server ^_^
Revert: OK
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665350 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/erl/src/protocol/tBinaryProtocol.erl b/lib/erl/src/protocol/tBinaryProtocol.erl
index 207f305..efcfd77 100644
--- a/lib/erl/src/protocol/tBinaryProtocol.erl
+++ b/lib/erl/src/protocol/tBinaryProtocol.erl
@@ -136,14 +136,13 @@
?L1(writeI32, length(Str)),
?R1(Trans, effectful_write, Str).
-%
+%%
readMessageBegin(This) ->
Version = ?L0(readI32),
if
(Version band ?VERSION_MASK) /= ?VERSION_1 ->
- throw(tProtocolException:new(?tProtocolException_BAD_VERSION,
- "Missing version identifier"));
+ tException:throw(tProtocolException, [?tProtocolException_BAD_VERSION, "Missing version identifier"]);
true -> ok
end,
Type = Version band 16#000000ff,
@@ -177,7 +176,7 @@
Size = ?L0(readI32),
{ Etype, Size }.
-%
+%%
readBool(This) ->
Byte = ?L0(readByte),