mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-12 18:27:23 +01:00
don't set plugin to fail state if we threw InvalidPluginOperationException
These are supposed to indicate to the user that they called a function at the wrong point in time. We don't want to actually mutate the state in that case.
This commit is contained in:
parent
8276c19c6f
commit
a1ae33bfee
2 changed files with 24 additions and 3 deletions
|
|
@ -0,0 +1,16 @@
|
|||
namespace Dalamud.Plugin.Internal.Exceptions;
|
||||
|
||||
/// <summary>
|
||||
/// An exception to be thrown when policy blocks a plugin from loading.
|
||||
/// </summary>
|
||||
internal class InternalPluginStateException : InvalidPluginOperationException
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="InternalPluginStateException"/> class.
|
||||
/// </summary>
|
||||
/// <param name="message">The message to associate with this exception.</param>
|
||||
public InternalPluginStateException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -281,7 +281,7 @@ internal class LocalPlugin : IAsyncDisposable
|
|||
case PluginState.Unloaded:
|
||||
if (this.instance is not null)
|
||||
{
|
||||
throw new InvalidPluginOperationException(
|
||||
throw new InternalPluginStateException(
|
||||
"Plugin should have been unloaded but instance is not cleared");
|
||||
}
|
||||
|
||||
|
|
@ -413,6 +413,8 @@ internal class LocalPlugin : IAsyncDisposable
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// These are "user errors", we don't want to mark the plugin as failed
|
||||
if (ex is not InvalidPluginOperationException)
|
||||
this.State = PluginState.LoadError;
|
||||
|
||||
// If a precondition fails, don't record it as an error, as it isn't really.
|
||||
|
|
@ -476,7 +478,10 @@ internal class LocalPlugin : IAsyncDisposable
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// These are "user errors", we don't want to mark the plugin as failed
|
||||
if (ex is not InvalidPluginOperationException)
|
||||
this.State = PluginState.UnloadError;
|
||||
|
||||
Log.Error(ex, "Error while unloading {PluginName}", this.InternalName);
|
||||
|
||||
throw;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue