Click or drag to resize
CoreTaskExtensionsCatchTException, TResult Method (TaskTResult, PredicateTException, FuncTaskTResult, TException, TResult)
This API is preliminary and subject to change.
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, or if the specified filter does not match the exception instance, 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.Threading
Assembly: Rackspace.Threading (in Rackspace.Threading.dll) Version: 2.1.0-beta1
Syntax
public static Task<TResult> Catch<TException, TResult>(
	this Task<TResult> task,
	Predicate<TException> filter,
	Func<Task<TResult>, TException, TResult> handler
)
where TException : Exception

Parameters

task
Type: System.Threading.TasksTaskTResult
The antecedent task.
filter
Type: SystemPredicateTException
A predicate defining the condition under which the exception is handled.
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: TaskTResult
A 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
ExceptionCondition
ArgumentNullException

If task is .

-or-

If filter is .

-or-

If handler is .

Remarks

This code implements support for the following construct without requiring the use of /.

C#
try
{
    return await task.ConfigureAwait(false);
}
catch (TException ex) when (filter(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

Threading Library

Supported in: 2.1
See Also