示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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);
        }