mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-13 12:14:16 +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:
|
case PluginState.Unloaded:
|
||||||
if (this.instance is not null)
|
if (this.instance is not null)
|
||||||
{
|
{
|
||||||
throw new InvalidPluginOperationException(
|
throw new InternalPluginStateException(
|
||||||
"Plugin should have been unloaded but instance is not cleared");
|
"Plugin should have been unloaded but instance is not cleared");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -413,6 +413,8 @@ internal class LocalPlugin : IAsyncDisposable
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
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;
|
this.State = PluginState.LoadError;
|
||||||
|
|
||||||
// If a precondition fails, don't record it as an error, as it isn't really.
|
// 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)
|
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;
|
this.State = PluginState.UnloadError;
|
||||||
|
|
||||||
Log.Error(ex, "Error while unloading {PluginName}", this.InternalName);
|
Log.Error(ex, "Error while unloading {PluginName}", this.InternalName);
|
||||||
|
|
||||||
throw;
|
throw;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue