Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该在failed grain方法中抛出异常吗?_C#_Asp.net Core_.net Core_Orleans_Actor Model - Fatal编程技术网

C# 我应该在failed grain方法中抛出异常吗?

C# 我应该在failed grain方法中抛出异常吗?,c#,asp.net-core,.net-core,orleans,actor-model,C#,Asp.net Core,.net Core,Orleans,Actor Model,我有两个标记为TransactionOption.CreateOrJoin的grain方法,它由另一个标记为TransactionOption.Create的grain方法调用。如果标记为TransactionOption.CreateOrJoin的两个grain方法中的任何一个失败,我想中止所有进程。我应该抛出这样的异常吗? 或者,是否存在中止所有进程的解决方案 await _balance.PerformUpdate(q =>{ if (q.Amount + amount >

我有两个标记为TransactionOption.CreateOrJoin的grain方法,它由另一个标记为TransactionOption.Create的grain方法调用。如果标记为TransactionOption.CreateOrJoin的两个grain方法中的任何一个失败,我想中止所有进程。我应该抛出这样的异常吗? 或者,是否存在中止所有进程的解决方案

await _balance.PerformUpdate(q =>{
   if (q.Amount + amount > _balanceLimit)
   {
     throw new ApplicationException("limit exceeded");
   }  
   
   q.Amount += amount;
});
许多人(包括我)说,您不应该将异常用于流控制。您正在检查常见情况(>限制),这并不是什么意外情况。您可以返回一个结果,其中包括操作是否成功。很多人(包括我)都说,流控制不应该使用异常。您正在检查常见情况(>限制),这并不是什么意外情况。您可以返回一个结果,其中包括操作是否成功。美国。