English 中文(简体)
采用非平行任务(过渡/不计算异常情况)的合成方法的模式
原标题:Pattern for implementing sync methods in terms of non-parallel Task (Translating/Unwrapping AggregateExceptions)

我有恢复任务的方法。

我也希望提供一刀切的等同,但我不想让消费者不得不不包装<条码>。

现在我的理解是,整个想法是,你可以笼统地任意选取一票,我知道,我可以读到更多的Stephen Toub的文章(我会,但现在还不是这样),我可以理解这一点,可以自行决定。

在此期间,我想利用这样一个事实,即我的任务实际上只是分散的工作流程,没有平行,而只是干预瓦伊特(无、而不是图卢普数据Flow),而瓦伊特人无意造成不止一个例外。 在此情况下,应当处理下列事项:

    CallAsync().Wait();
}
catch( AggregateException ae)
{
    throw ae.Flatten().First()

或我保证:<代码> 纵有超过一种,则总有<条码>内约。 或者,如果我回过来的话,我就应该回到<条码>。


在有些TPL docs中,我提到了 Unwrap() 方法Aggregate Exception(但不能确定该方法是一种延伸,或者是一种排泄物)。

作为股东,我做的是:

void Call( )
{
    try
    {
        CallAsync().Wait();
    }
    catch ( AggregateException ex )
    {
        var translated = ex.InnerException ?? ex.Flatten().InnerExceptions.First();
        if ( translated == null )
            throw;
        throw translated;                 }
}

Task CallAsync(){ ...
最佳回答

我知道,这样做没有“明确”的方法。 您可使用<条码>浏览某些内分录;,因为你在例外产生于“合成工作流程”的地方,如果你只使用<条码>;,你显然将传播<条码>。 AggregateException。 您对同步方法必须做的是某种“强奸”例外,即你可以把<条码>的排入,然后从该方法的细微版本中 consistently弃。

void Call()
{
    try
    {
        CallAsync().Wait();
    }
    catch (AggregateException ex)
    {
        throw new MyConsistentWrapperException("An exception occurred while executing my workflow. Check the inner exception for more details.", ex.Flatten().InnerExceptions.First());
    }
}

妇联在4.5年用ExceptionDisTOPInfo, 类别,这将有助于你在不打脚的垫子下穿过深层的除草剂。 之后,你可以撰写这样一文ron:

void Call()
{
    try
    {
        CallAsync().Wait();
    }
    catch (AggregateException ex)
    {
        ExceptionDispatchInfo.Capture(ex.Flatten().InnerExceptions.First()).Throw();
    }
}
问题回答

暂无回答




相关问题
handling exceptions IN Action Filters

Is there a better way to handle exceptions that occur inside an Action Filter itself in ASP .NET MVC? There re 2 ways I can think of at the moment. Using a try catch and setting the HTTP Status ...

既可捕获,又可举出例外。

我有一种办法,可以进入亚洲开发银行,因此,我国的亚行在多瑙河航道中的所有 st子都位于一个试捕区。 它正在追捕Kexception

Cross compiler exception handling - Can it be done safely?

I am doing some maintenance on a C++ windows dll library that is required to work with different VC++ compilers (as I don’t want to address different mangling schemes). I have already eliminated any ...

File Handling Issue

I am developing a tool in c#, at one instance I start writing into a xml file continuously using my tool,when i suddenly restart my machine the particular xml file gets corrupted, what is the reason ...

Watch a memory location/install data breakpoint from code?

We have a memory overwrite problem. At some point, during the course of our program, a memory location is being overwritten and causing our program to crash. the problem happens only in release mode. ...

Unit Test for Exceptions Message

Is there a simple (Attribute-driven) way to have the following test fail on the message of the exception. [TestMethod()] [ExpectedException(typeof(ArgumentException))] public void ExceptionTestTest() ...

热门标签