internal static void writeObject(Exception x, ObjectOutputStream s) { #if !FIRST_PASS lock (x) { ObjectOutputStream.PutField fields = s.putFields(); Throwable _thisJava = x as Throwable; if (_thisJava == null) { fields.put("detailMessage", x.Message); fields.put("cause", x.InnerException); // suppressed exceptions are not supported on CLR exceptions fields.put("suppressedExceptions", null); fields.put("stackTrace", getOurStackTrace(x)); } else { fields.put("detailMessage", _thisJava.detailMessage); fields.put("cause", _thisJava.cause); fields.put("suppressedExceptions", _thisJava.suppressedExceptions); getOurStackTrace(x); fields.put("stackTrace", _thisJava.stackTrace ?? java.lang.ThrowableHelper.SentinelHolder.STACK_TRACE_SENTINEL); } s.writeFields(); } #endif }
internal static void writeObject(Exception x, ObjectOutputStream s) { #if !FIRST_PASS lock (x) { ObjectOutputStream.PutField fields = s.putFields(); fields.put("detailMessage", Throwable.instancehelper_getMessage(x)); Exception cause = Throwable.instancehelper_getCause(x); if (cause == null && x is Throwable) { cause = ((Throwable)x).cause; } fields.put("cause", cause); fields.put("stackTrace", Throwable.instancehelper_getStackTrace(x)); s.writeFields(); } #endif }