How can I check the status of a process instance and catch "exceptions"?


When I start an instance I would like to know if all went well, but there is no “status” field that tells me “Ok” or “ERROR” or “CANCELED”.
I would like to know if an instance can actually have one of these states, or if it always ends. I’m wondering if an instance can fail by “itself” (I mean for reasons that do not depend on the actions that the instance does), and in that case how can I check it.