所以我正在C#中使用cmdlet,并使用从PSCmdlet派生的基本cmdlet。
例如:孩子<-父母<-PSCmdlet。
我们使用Parent cmdlet中的方法登录到系统。但是有时候,异常,崩溃等并非总能解决问题。因此,它实际上并没有正确注销。
我的问题如下: 是否存在我可以在Parent cmdlet中实现/重写的方法,无论发生什么情况,该方法都将运行,以便我们可以正确注销?有点像最后尝试。 我已经检查了EndProcessing()和StopProcessing(),但是在不可预见的情况下它们并不能完全胜任该任务。
编辑:为澄清起见,有多个cmdlet,这种情况不仅与登录有关。根据代码和用户输入,可能会发生多种异常。
答案 0 :(得分:1)
我的问题的解决方案,如@PetSerAl所建议的,是在Parent类中实现IDisposable。 然后,无论发生什么情况,我都可以使用Dispose()来添加完成cmdlet所需的任何方法。
答案 1 :(得分:0)
使用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);
}
...
在UnauthorizedException()
内您将(如果尚未)抛出UserLogin()
异常的地方,或者将使用哪种方法来测试凭据。
这个概念也可以应用于您正在期望抛出异常的其他代码区域。如果异常是由于代码无法正常运行而引起的,则Try-Catch
不应用于抑制该错误,因为应予以纠正。基于用户输入的异常/错误可以用Try-Catch
包装。