C#| MS BotBuilder | DefaultIfException的用法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#| MS BotBuilder | DefaultIfException的用法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1572字,纯文字阅读大概需要3分钟。
内容图文
![C#| MS BotBuilder | DefaultIfException的用法](/upload/InfoBanner/zyjiaocheng/684/ab50e7420ba14862812304b503ede331.jpg)
我正在尝试查找有关如何在MS Bot构建器SDK中使用DefaultIfException的一些文档.据我所知,尚无关于其用法的文档.
我们正在努力避免向用户发布“对不起,我的机器人代码有问题”消息.使用DefaultIfException会执行所说的操作并“阻止异常的传播”,但是我不确定如何发布我自己的错误消息,而不是什么也不发.
如果我们有办法告诉bot框架使用自定义错误对话框类或类似的东西,那就太好了.
编辑代码示例:
等待Conversation.SendAsync(activity,()=> new RootDialog().DefaultIfException());
其中RootDialog()是我们自定义的对话框类,它仅实现IDialog< object>
您会注意到是否实现了IDialog< object>您可以访问公共异步任务StartAsync(IDialogContext上下文).在此方法中,我们调用context.Wait(MessageReceivedAsync);,然后具有以下内容:公共异步任务MessageReceivedAsync(IDialogContext上下文,IAwaitable< IMessageActivity>参数)
在此方法中,我们处理消息,然后将处理包装在try-catch中,然后处理错误.
需要明确的是-我们实际上并没有使用DefaultIfException,因为它不允许我们使用自己的错误消息.但是,如果您只是想停止错误传播,则可以只使用DefaulIfException
解决方法:
我将从DefaultIfExceptionDialog修改代码,如下所示:
[Serializable]
public sealed class ErrorMessageDialog<T, E> : IDialog<T> where E : Exception
{
public readonly IDialog<T> Antecedent;
public ErrorMessageDialog(IDialog<T> antecedent)
{
SetField.NotNull(out this.Antecedent, nameof(antecedent), antecedent);
}
async Task IDialog<T>.StartAsync(IDialogContext context)
{
context.Call<T>(this.Antecedent, ResumeAsync);
}
private async Task ResumeAsync(IDialogContext context, IAwaitable<T> result)
{
try
{
context.Done(await result);
}
catch (E)
{
await context.PostAsync("sorry");
context.Done(default(T));
}
}
内容总结
以上是互联网集市为您收集整理的C#| MS BotBuilder | DefaultIfException的用法全部内容,希望文章能够帮你解决C#| MS BotBuilder | DefaultIfException的用法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。