When you author restrict (amp) kernels (the lambda you pass to parallel_for_each), as with any other code, there are various things that can go wrong. In restrict (amp) code there is no exception handling, but the C++ AMP runtime can throw exceptions on the CPU side when you call parallel_for_each, when you construct various C++ AMP types and when you make various calls on those types. This blog series will describe the C++ AMP exceptions.
The main new exception introduced is concurrency::runtime_exception in amprt.h (which is included in your code when you include amp.h), which inherits from std::exception. There are also 4 other new exceptions (in the same namespace and header file) that themselves inherit from runtime_exception: invalid_compute_domain, unsupported_feature, out_of_memory, and accelerator_view_removed.
In follow up blog posts I will explain each one of the exceptions and will then update this post with links to them: