| File: Utility\ExceptionUtility.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.PackageManagement\NuGet.PackageManagement.csproj (NuGet.PackageManagement) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. #nullable disable using System; using System.Reflection; namespace NuGet.PackageManagement { public static class ExceptionUtility { public static Exception GetRootException(Exception exception) { if (exception == null) { throw new ArgumentNullException(nameof(exception)); } while (exception.InnerException != null) { exception = exception.InnerException; } return exception; } public static Exception Unwrap(Exception exception) { if (exception == null) { throw new ArgumentNullException(nameof(exception)); } if (exception.InnerException == null) { return exception; } // Always return the inner exception from a target invocation exception if (exception is AggregateException || exception is TargetInvocationException) { return exception.GetBaseException(); } return exception; } } }