如何在Q#中引发异常?

时间:2018-07-24 13:43:48

标签: exception q#

我尝试用Q#编写算法。在某些情况下,该算法无法计算出成功的结果,因为用户传递了一些错误的参数。在这种情况下,我想引发异常,现在我想知道:是否有可能在Q#中引发并捕获异常?

如果是:我该怎么做?Q#中异常处理的正确方法是什么?

如果没有:为什么?有什么解决方法吗?

1 个答案:

答案 0 :(得分:2)

catch子句在通用语言中特别有用的许多情况下,它们看起来有点像处理I / O错误,因为它们很难通过普通的流控制来预测和处理。相比之下,Q#程序的执行意图是可预测的,因此像AdjointControlled这样的函子可以生成程序的适当转换,作为较大量子算法的一部分。

这就是说,正如您所指出的,在某些情况下,有时人们可能无法明智地前进。因此,Q#提供了一个fail语句,该语句的操作类似于throw语句(但是使用了String而不是异常对象),但没有提供与{{1 }} – try块。 catch语句旨在与Q#程序无法明智地继续进行的C#主机程序进行通信,并且在诸如用户传递错误实例的情况下非常有用。例如,在标准库中的整个Facts.qs文件中都使用它来实现经典的断言功能,例如EqualityWithinToleranceFact

fail