Missing or faulty exception handling has caused a number of spectacular system failures and is a major cause of software failures in extensively tested critical systems. Prior work is reviewed and found lacking in a comprehensive approach at the system level as contrasted with details of exception handling at the programming level. As a path to better understanding of the problem, the needs for exception handling are described as they arise at different times of the development cycle and from different disciplines. It is seen that a comprehensive solution is difficult but is essential. The details of stating requirements for exception handling are addressed and a methodology for verifying the effectiveness and completeness is described. Further research needs are discussed and the formation of a working group for a best practice or standard on the subject is suggested.