C#等待并捕获异常

Tensort

我在这里看到无数人谈论从异步功能捕获异常的方法,但对我没有任何作用。

我用了一些代码制作了一个IRC机器人:https : //github.com/BenFradet/RiotSharp(因为继承自该异常WebException,如果要测试,应该做同样的事情)

所以我尝试了异步功能。GetSummoner()例如,当RiotApi的功能找不到用户时,将抛出404 RiotSharpException

try
{
    RiotSharp.SummonerEndpoint.Summoner summoner = api.GetSummoner(region,name);
    SendSummonersDetails(summoner, e.Message.MessageTarget);
}
catch (RiotSharpException ex)
{
    string error = string.Format(this.RegionNotFound, command[2]);
    irc.Send(new IRCMessage("PRIVMSG", e.Message.MessageTarget, error));
}

我已经花了很多时间来捕捉404。但是,如果我使用异步版本:我会继续

try
{
    RiotSharp.SummonerEndpoint.Summoner summoner = await api.GetSummonerAsync(region,name);
    SendSummonersDetails(summoner, e.Message.MessageTarget);
}
catch (RiotSharpException ex)
{
    string error = string.Format(this.RegionNotFound, command[2]);
    irc.Send(new IRCMessage("PRIVMSG", e.Message.MessageTarget, error));
}

或对于Task,然后离开,try / catch不会捕获异常。

我尝试了在这里看到的所有内容:捕获异步void方法引发的异常

我也尝试了ContinueWith TaskContinuationOptions.OnlyOnFaulted,也没有用。

我使用VS 2013和框架4.5ish

我相当迷失了atm,用尽了我在这里找到的所有东西,但没有任何效果,也许有人能想到些什么?

柬埔寨Mrinal

尝试类似:

               try
               {
                    RiotSharp.SummonerEndpoint.Summoner summoner = await api.GetSummonerAsync(region,name);
                    SendSummonersDetails(summoner, e.Message.MessageTarget);
                }
                catch (AggregateException ex)
                {
                  foreach(Exception ee in ex.InnerExceptions)
                  {
                    RiotException e = ee as RiotException;
                    string error = string.Format(this.RegionNotFound, command[2]);
                    irc.Send(new IRCMessage("PRIVMSG", e.Message.MessageTarget, error));
                  } 

                 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#如何使用等待在不阻止UI的情况下捕获任务中的异常

来自分类Dev

捕获OutOfMemory异常C#

来自分类Dev

C#如何捕获异常并恢复执行

来自分类Dev

C#通过消息捕获异常

来自分类Dev

未捕获MySQL异常(C#)

来自分类Dev

未捕获MySQL异常(C#)

来自分类Dev

C#用户定义的异常未捕获

来自分类Dev

无法捕获 c# web api 异常

来自分类Dev

WCF 4.5和异常处理中的C#异步等待

来自分类Dev

使用等待处理任务中的 C# 异常

来自分类Dev

尝试捕获异步等待https异常

来自分类Dev

如何正确捕获等待方法的异常

来自分类Dev

C#捕获异常或预先验证参数

来自分类Dev

C#使用反射来捕获异常抛出

来自分类Dev

捕获C#中从Delphi DLL引发的异常

来自分类Dev

C#在调用堆栈中捕获未处理的异常

来自分类Dev

C#从委托.begininvoke捕获异常而不调用委托.endinvoke

来自分类Dev

如何停止捕获C#中的特定异常

来自分类Dev

是否可以捕获基本FaultException并检索原始异常?C#

来自分类Dev

C#在调用堆栈中捕获未处理的异常

来自分类Dev

捕获对象在代码之前抛出的异常... c#

来自分类Dev

无法在 try-catch C# 中捕获异常

来自分类Dev

C# 不会捕获“嵌套”自定义异常

来自分类Dev

C#中通过继承捕获异常

来自分类Dev

无法捕获C ++异常

来自分类Dev

C#等待事件

来自分类Dev

c# 等待任务

来自分类Dev

C#量角器AngularJS IEDriverServer Click()异常“等待页面加载超时”

来自分类Dev

在ASP.NET C#中捕获所有异常,而不是在try {} catch {}块中捕获每个方法