我无法理解如何在Dialogs中使用该IDialogContext方法Fail.我知道它应该向父对话框发送一个异常,但这会发生在哪里?我想在ResumeAfter方法中,但我不完全确定.
我问这个是因为我有一个从根对话框分支的几个对话框,我正在试图找出一种方法将异常一直传播回root并返回到我最初Conversations.SendAsync在Controller中调用的位置.这样做的任何例子都会很棒.
我找到了处理异常的好方法.看来,context.Fail如果您希望使用异常显式结束上下文.如果在对话框的其他位置抛出异常但未捕获异常,则会将其传播到父对话框并在ResumeAfter方法中接收.例如
public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
var message = await argument;
await context.Call(new ChildDialog(), AfterMessageAsync);
}
private async Task AfterMessageAsync(IDialogContext context, IAwaitable<object> result)
{
try
{
var childResult = await result;
await context.PostAsync($"ended child with: {childResult}");
}
catch (Exception ex)
{
await context.PostAsync($"ended child with exception: {ex.StackTrace}");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |