I see what you mean, but in the general case you don't know that everyone *ever* will want this to happen. I have no problem if you write ```if (PETScLinearSolver::solve(...) == false) exit(...);``` at the location where you call the PetsC solver but it is dangerous to decide this for everyone.

Just as an example: Let's assume I write a little tool where I can solve a problem with my own secret Method A but it is very slow. As an alternative I could use your PetsC method B. It is not clear if for a specific set of parameters it is possible to solve with B. If it is not I would want to use my super-special secret method A, which always works but is slow. So I try *your* method first. It fails and exits the programme, so I don't have a chance to use my own method as an alternative. 

That's why I dislike ```exit()``` (We actually had such a case in the mesh-reader in OGS 5 where we could not do our own error management because the reader would automatically exit the programme)