CoreTaskExtensionsCatchTException, TResult Method (TaskTResult, FuncTaskTResult, TException, TResult) |
Synchronously execute an exception handling continuation when a task completes in the
Canceled or
Faulted state. If the
antecedent task completes successfully, or if the
Exception it
provides is not a
TException wrapped in an
AggregateException, the status of the antecedent is directly applied to
the task returned by this method. Otherwise, the status of the cleanup operation is
directly applied to the task returned by this method.
Namespace: Rackspace.ThreadingAssembly: Rackspace.Threading (in Rackspace.Threading.dll) Version: 1.1.0.0
Syntax
public static Task<TResult> Catch<TException, TResult>(
this Task<TResult> task,
Func<Task<TResult>, TException, TResult> handler
)
where TException : Exception
<ExtensionAttribute>
Public Shared Function Catch(Of TException As Exception, TResult) (
task As Task(Of TResult),
handler As Func(Of Task(Of TResult), TException, TResult)
) As Task(Of TResult)
public:
[ExtensionAttribute]
generic<typename TException, typename TResult>
where TException : Exception
static Task<TResult>^ Catch(
Task<TResult>^ task,
Func<Task<TResult>^, TException, TResult>^ handler
)
[<ExtensionAttribute>]
static member Catch :
task : Task<'TResult> *
handler : Func<Task<'TResult>, 'TException, 'TResult> -> Task<'TResult> when 'TException : Exception
Parameters
- task
- Type: System.Threading.TasksTaskTResult
The antecedent task. - handler
- Type: SystemFuncTaskTResult, TException, TResult
The exception handler continuation function to execute when task completes with an exception of type TException.
Type Parameters
- TException
- The type of exception which is handled by handler.
- TResult
- The result type of the antecedent task.
Return Value
Type:
TaskTResultA
Task representing the asynchronous operation. When the task completes successfully,
the
Result property will contain the result returned from the
task
if it completed successfully, or the result of
handler if it resulted in an error condition
which was handled.
Usage Note
In Visual Basic and C#, you can call this method as an instance method on any object of type
TaskTResult. When you use instance method syntax to call this method, omit the first parameter. For more information, see
Extension Methods (Visual Basic) or
Extension Methods (C# Programming Guide).
Exceptions
Remarks
This code implements support for the following construct without requiring the use of
/
.
try
{
return await task.ConfigureAwait(false);
}
catch (TException ex)
{
return handler(task, ex);
}
This method is capable of handling Canceled antecedent
tasks when TException is assignable from
TaskCanceledException.
This method ensures that exception information provided by a faulted or canceled
task is not wrapped in an additional AggregateException.
Version Information
.NET for Windows Store apps
Supported in: Windows 8
.NET Framework
Supported in: 4.5, 4.0, 3.5
Portable Class Library
Supported in: Portable Class Library (Legacy), Portable Class Library
Rackspace Threading Library
Supported in: 1.1
See Also