Esempio n. 1
0
 /// <summary>
 /// Throws exception if HRESULT != 0.
 /// </summary>
 /// <param name="hresult">Result code to check.</param>
 /// <param name="message">Exception message.</param>
 /// <param name="handler">The class responsible for the callback.</param>
 internal void CheckedExecute(int hresult, string message, CallbackBase handler)
 {
     if (hresult != (int)OperationResult.Ok || handler.HasExceptions)
     {
         if (!handler.HasExceptions)
         {
             if (hresult < -2000000000)
             {
                 ThrowException(handler,
                                new SevenZipException(
                                    "Execution has failed due to an internal SevenZipSharp issue.\n" +
                                    "Please report it to https://github.com/squid-box/SevenZipSharp/issues/, include the release number, 7z version used, and attach the archive."));
             }
             else
             {
                 ThrowException(handler,
                                new SevenZipException(message + hresult.ToString(CultureInfo.InvariantCulture) +
                                                      '.'));
             }
         }
         else
         {
             ThrowException(handler, handler.Exceptions[0]);
         }
     }
 }
Esempio n. 2
0
 /// <summary>
 /// Throws the specified exception when is able to.
 /// </summary>
 /// <param name="e">The exception to throw.</param>
 /// <param name="handler">The handler responsible for the exception.</param>
 public bool ThrowException(CallbackBase handler, params Exception[] e)
 {
     if (_reportErrors && (handler == null || !handler.Canceled))
     {
         throw e[0];
     }
     return(false);
 }
Esempio n. 3
0
        /// <summary>
        /// Throws exception if HRESULT != 0.
        /// </summary>
        /// <param name="hresult">Result code to check.</param>
        /// <param name="message">Exception message.</param>
        /// <param name="handler">The class responsible for the callback.</param>
        internal void CheckedExecute(int hresult, string message, CallbackBase handler)
        {
            if (hresult != (int)OperationResult.Ok || handler.HasExceptions)
            {
                if (!handler.HasExceptions)
                {
                    if (hresult < -2000000000)
                    {
                        SevenZipException exception;

                        switch (hresult)
                        {
                        case -2147024784:
                            exception = new SevenZipException("There is not enough space on the disk. (0x80070070: ERROR_DISK_FULL)");
                            break;

                        case -2147024864:
                            exception = new SevenZipException("The file is being used by another process. (0x80070020: ERROR_SHARING_VIOLATION)");
                            break;

                        case -2147024882:
                            exception = new SevenZipException("There is not enough memory (RAM). (0x8007000E: E_OUTOFMEMORY)");
                            break;

                        case -2147024809:
                            exception = new SevenZipException("Invalid arguments provided. (0x80070057: E_INVALIDARG)");
                            break;

                        default:
                            exception = new SevenZipException(
                                $"Execution has failed due to an internal SevenZipSharp issue (0x{hresult:x} / {hresult}).\n" +
                                "Please report it to https://github.com/squid-box/SevenZipSharp/issues/, include the release number, 7z version used, and attach the archive.");
                            break;
                        }

                        ThrowException(handler, exception);
                    }
                    else
                    {
                        ThrowException(handler,
                                       new SevenZipException(message + hresult.ToString(CultureInfo.InvariantCulture) +
                                                             '.'));
                    }
                }
                else
                {
                    ThrowException(handler, handler.Exceptions[0]);
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Throws exception if HRESULT != 0.
        /// </summary>
        /// <param name="hresult">Result code to check.</param>
        /// <param name="message">Exception message.</param>
        /// <param name="handler">The class responsible for the callback.</param>
        internal void CheckedExecute(int hresult, string message, CallbackBase handler)
        {
            if (hresult != (int)OperationResult.Ok || handler.HasExceptions)
            {
                if (!handler.HasExceptions)
                {
                    if (hresult < -2000000000)
                    {
                        SevenZipException exception;

                        switch (hresult)
                        {
                        case -2147024784:
                            exception = new SevenZipException("There is not enough space on the disk. (0x80070070: DISK_FULL)");
                            break;

                        default:
                            exception = new SevenZipException(
                                $"Execution has failed due to an internal SevenZipSharp issue (0x{hresult:x}).\n" +
                                "Please report it to https://github.com/squid-box/SevenZipSharp/issues/, include the release number, 7z version used, and attach the archive.");
                            break;
                        }

                        ThrowException(handler, exception);
                    }
                    else
                    {
                        ThrowException(handler,
                                       new SevenZipException(message + hresult.ToString(CultureInfo.InvariantCulture) +
                                                             '.'));
                    }
                }
                else
                {
                    ThrowException(handler, handler.Exceptions[0]);
                }
            }
        }