/// <summary> /// Throw exception from error code. /// </summary> /// <param name="errorCode">error code</param> /// <param name="message">error message</param> /// <exception cref="ArgumentOutOfRangeException">argument range exception</exception> /// <exception cref="ArgumentException">argument exception</exception> /// <exception cref="InsufficientMemoryException">memory full exception</exception> /// <exception cref="InvalidOperationException">illegal exception</exception> public static void ThrowError(CfdErrorCode errorCode, string message) { if (errorCode == CfdErrorCode.Success) { return; } var errorMessage = message; if (string.IsNullOrEmpty(errorMessage)) { errorMessage = string.Format(CultureInfo.InvariantCulture, "CFD error[{0}]", errorCode); } switch (errorCode) { case CfdErrorCode.MemoryFullError: throw new InsufficientMemoryException(errorMessage); case CfdErrorCode.OutOfRangeError: throw new ArgumentOutOfRangeException(errorMessage); case CfdErrorCode.SignVerificationError: case CfdErrorCode.InvalidSettingError: case CfdErrorCode.IllegalArgumentError: throw new ArgumentException(errorMessage); case CfdErrorCode.ConnectionError: case CfdErrorCode.DiskAccessError: case CfdErrorCode.IllegalStateError: case CfdErrorCode.InternalError: case CfdErrorCode.UnknownError: default: throw new InvalidOperationException(errorMessage); } }
/// <summary> /// Throw exception from error handle and error code. /// </summary> /// <param name="errorCode">error code</param> /// <exception cref="ArgumentOutOfRangeException">argument range exception</exception> /// <exception cref="ArgumentException">argument exception</exception> /// <exception cref="InsufficientMemoryException">memory full exception</exception> /// <exception cref="InvalidOperationException">illegal exception</exception> public void ThrowError(CfdErrorCode errorCode) { if ((errorCode == CfdErrorCode.Success) || disposed) { return; } string errorMessage; var ret = CCommon.CfdGetLastErrorMessage(handle, out IntPtr messageAddress); if (ret == CfdErrorCode.Success) { string message = CCommon.ConvertToString(messageAddress); errorMessage = $"CFD error[{errorCode}] message:{message}"; } else { errorMessage = $"CFD error[{errorCode}]"; } CfdCommon.ThrowError(errorCode, errorMessage); }