Cmdlet C# 完成
Cmdlet C# finalization
所以我在 C# 中使用 cmdlet 并使用派生自 PSCmdlet 的基本 cmdlet。
像这样:子 <- 父 <- PSCmdlet。
我们使用 Parent cmdlet 中的方法登录系统。但有时事情并不总是会出现异常、崩溃等情况。所以它并没有真正正确注销。
我的问题如下:
是否存在一种方法,我可以在 Parent cmdlet 中 implement/override 无论发生什么情况都将 运行,以便我们可以正确注销?有点像最后尝试。
我已经检查了 EndProcessing() 和 StopProcessing() 但在不可预见的情况下它们并不能真正胜任任务。
编辑:需要说明的是,存在多个 cmdlet,而且这种情况不仅仅与登录有关。根据代码和用户输入,可能会发生多种异常。
这听起来是个很好的例子 Try-catch
:
try
{
UserLogin();
OtherMethod();
}
catch(UnauthorizedException au)
{
Console.WriteLine("Unauthorized user... shutting down");
//Closing Code...
Environment.Exit(0);
}
catch(OtherException oe)
{
//Closing Code...
Environment.Exit(0);
}
...
您将在 UserLogin()
中(如果尚未)抛出 UnauthorizedException()
异常的位置或您用来测试凭据的任何方法。
这个概念也可以应用于您期望 抛出异常的其他代码区域。如果异常是因为代码无法正常工作,则不应使用 Try-Catch
来抑制该错误,因为它应该被更正。 Exceptions/errors 基于用户输入可以用 Try-Catch
包装。
正如@PetSerAl 所建议的那样,我的问题的解决方案是在 Parent class 中实现 IDisposable。
使用 Dispose() 然后,无论发生什么情况,我都可以添加完成 cmdlet 所需的任何方法。
所以我在 C# 中使用 cmdlet 并使用派生自 PSCmdlet 的基本 cmdlet。
像这样:子 <- 父 <- PSCmdlet。
我们使用 Parent cmdlet 中的方法登录系统。但有时事情并不总是会出现异常、崩溃等情况。所以它并没有真正正确注销。
我的问题如下: 是否存在一种方法,我可以在 Parent cmdlet 中 implement/override 无论发生什么情况都将 运行,以便我们可以正确注销?有点像最后尝试。 我已经检查了 EndProcessing() 和 StopProcessing() 但在不可预见的情况下它们并不能真正胜任任务。
编辑:需要说明的是,存在多个 cmdlet,而且这种情况不仅仅与登录有关。根据代码和用户输入,可能会发生多种异常。
这听起来是个很好的例子 Try-catch
:
try
{
UserLogin();
OtherMethod();
}
catch(UnauthorizedException au)
{
Console.WriteLine("Unauthorized user... shutting down");
//Closing Code...
Environment.Exit(0);
}
catch(OtherException oe)
{
//Closing Code...
Environment.Exit(0);
}
...
您将在 UserLogin()
中(如果尚未)抛出 UnauthorizedException()
异常的位置或您用来测试凭据的任何方法。
这个概念也可以应用于您期望 抛出异常的其他代码区域。如果异常是因为代码无法正常工作,则不应使用 Try-Catch
来抑制该错误,因为它应该被更正。 Exceptions/errors 基于用户输入可以用 Try-Catch
包装。
正如@PetSerAl 所建议的那样,我的问题的解决方案是在 Parent class 中实现 IDisposable。 使用 Dispose() 然后,无论发生什么情况,我都可以添加完成 cmdlet 所需的任何方法。