static private void errInfoSetter(object val, uint id, GlobalEntry gb, NetRuby rb) { RThread th = rb.GetCurrentContext(); if (val != null) { RBasic b = rb.InstanceOf(val); if (b.IsKindOf(rb.eException) == false) throw new eTypeError("assigning non-exception to $!"); } th.errInfo = (RException)val; }