WuhuIslandTesting/Library/PackageCache/com.unity.addressables@1.21.12/Runtime/ResourceManager/Util/Exceptions.cs
2025-01-07 02:06:59 +01:00

201 lines
7.7 KiB
C#

using System;
using System.Runtime.Serialization;
using UnityEngine.ResourceManagement.ResourceLocations;
using UnityEngine.ResourceManagement.Util;
namespace UnityEngine.ResourceManagement.Exceptions
{
/// <summary>
/// Base class for all ResourceManager related exceptions.
/// </summary>
public class ResourceManagerException : Exception
{
/// <summary>
/// Construct a new ResourceManagerException.
/// </summary>
public ResourceManagerException()
{
}
/// <summary>
/// Construct a new ResourceManagerException.
/// </summary>
/// <param name="message">Message to describe the exception.</param>
public ResourceManagerException(string message) : base(message)
{
}
/// <summary>
/// Construct a new ResourceManagerException.
/// </summary>
/// <param name="message">Message to describe the exception.</param>
/// <param name="innerException">Inner exception that caused this exception.</param>
public ResourceManagerException(string message, Exception innerException) : base(message, innerException)
{
}
/// <summary>
/// Construct a new ResourceManagerException.
/// </summary>
/// <param name="message">Message to describe the exception.</param>
/// <param name="context">Context related to the exception.</param>
protected ResourceManagerException(SerializationInfo message, StreamingContext context) : base(message, context)
{
}
/// <summary>Provides a new string object describing the exception.</summary>
/// <returns>A newly allocated managed string.</returns>
public override string ToString() => $"{GetType().Name} : {base.Message}\n{InnerException}";
}
/// <summary>
/// Exception returned when the IResourceProvider is not found for a location.
/// </summary>
public class UnknownResourceProviderException : ResourceManagerException
{
/// <summary>
/// The location that contains the provider id that was not found.
/// </summary>
public IResourceLocation Location { get; private set; }
/// <summary>
/// Construct a new UnknownResourceProviderException
/// </summary>
/// <param name="location">The location that caused the exception to be created.</param>
public UnknownResourceProviderException(IResourceLocation location)
{
Location = location;
}
/// <summary>
/// Construct a new UnknownResourceProviderException
/// </summary>
public UnknownResourceProviderException()
{
}
/// <summary>
/// Construct a new UnknownResourceProviderException
/// </summary>
/// <param name="message">Message to describe the exception.</param>
public UnknownResourceProviderException(string message) : base(message)
{
}
/// <summary>
/// Construct a new UnknownResourceProviderException
/// </summary>
/// <param name="message">Message to describe the exception.</param>
/// <param name="innerException">Inner exception that caused this exception.</param>
public UnknownResourceProviderException(string message, Exception innerException) : base(message, innerException)
{
}
/// <summary>
/// Construct a new UnknownResourceProviderException
/// </summary>
/// <param name="message">Message to describe the exception.</param>
/// <param name="context">Context related to the exception.</param>
protected UnknownResourceProviderException(SerializationInfo message, StreamingContext context) : base(message, context)
{
}
/// <summary>
/// Returns a string describing this exception.
/// </summary>
public override string Message
{
get { return base.Message + ", ProviderId=" + Location.ProviderId + ", Location=" + Location; }
}
/// <summary>
/// Returns string representation of exception.
/// </summary>
/// <returns>String representation of exception.</returns>
public override string ToString()
{
return Message;
}
}
/// <summary>
/// Class that represent an error that occured during an AsyncOperation.
/// </summary>
public class OperationException : Exception
{
/// <summary>
/// Creates a new instance of <see cref="OperationException"/>.
/// </summary>
/// <param name="message">A message describing the error.</param>
/// <param name="innerException">The exception that caused the error, if any.</param>
public OperationException(string message, Exception innerException = null) : base(message, innerException)
{
}
/// <summary>Provides a new string object describing the exception.</summary>
/// <returns>A newly allocated managed string.</returns>
public override string ToString() => $"{GetType().Name} : {base.Message}\n{InnerException}";
}
/// <summary>
/// Class that represent an error that occured during a ProviderOperation.
/// </summary>
public class ProviderException : OperationException
{
/// <summary>
/// Creates a new instance of <see cref="ProviderException"/>.
/// </summary>
/// <param name="message">A message describing the error.</param>
/// <param name="location">The resource location that the operation was trying to provide.</param>
/// <param name="innerException">The exception that caused the error, if any.</param>
public ProviderException(string message, IResourceLocation location = null, Exception innerException = null)
: base(message, innerException)
{
Location = location;
}
/// <summary>
/// The resource location that the operation was trying to provide.
/// </summary>
public IResourceLocation Location { get; }
}
/// <summary>
/// Class representing an error occured during an operation that remotely fetch data.
/// </summary>
public class RemoteProviderException : ProviderException
{
/// <summary>
/// Creates a new instance of <see cref="ProviderException"/>.
/// </summary>
/// <param name="message">A message describing the error.</param>
/// <param name="location">The resource location that the operation was trying to provide.</param>
/// <param name="uwrResult">The result of the unity web request, if any.</param>
/// <param name="innerException">The exception that caused the error, if any.</param>
public RemoteProviderException(string message, IResourceLocation location = null, UnityWebRequestResult uwrResult = null, Exception innerException = null)
: base(message, location, innerException)
{
WebRequestResult = uwrResult;
}
/// <summary>
/// Returns a string describing this exception.
/// </summary>
public override string Message => this.ToString();
/// <summary>
/// The result of the unity web request, if any.
/// </summary>
public UnityWebRequestResult WebRequestResult { get; }
/// <summary>Provides a new string object describing the exception.</summary>
/// <returns>A newly allocated managed string.</returns>
public override string ToString()
{
if (WebRequestResult != null)
return $"{GetType().Name} : {base.Message}\nUnityWebRequest result : {WebRequestResult}\n{InnerException}";
else
return base.ToString();
}
}
}