internal static Exception CreateManagedException (MoonError err)
{
string msg = err.Message;
Exception ex = null;
if (err.GCHandlePtr != IntPtr.Zero) {
// We need to get this before calling Dispose.
ex = err.GCHandle.Target as Exception;
}
err.Dispose ();
switch (err.Number) {
case 1:
default:
return new Exception (msg);
case 2:
return new ArgumentException (msg);
case 3:
return new ArgumentNullException (msg);
case 4:
return new ArgumentOutOfRangeException (msg);
case 5:
return new InvalidOperationException (msg);
case 6:
return new XamlParseException (err.LineNumber, err.CharPosition, msg);
case 7:
return new UnauthorizedAccessException (msg);
case 8:
return new ExecutionEngineException (msg);
case 9:
if (ex != null)
return ex;
return new Exception (msg);
case 10:
return new ListenFailedException (msg);
case 11:
return new SendFailedException (msg);
case 12:
return new NotImplementedException (msg);
}
}
}