Ada's main popularity problem appears to me to be due to its advantages not being immediately obvious when writing small programs. For example, comparing a small program written in C and Ada the Ada version would appear extremely verbose to most C programmers.
Ada's advantages start to really show when you deal with much larger pieces of software; what appears verbose or overly-strict at a smaller scale provides valuable assistance when dealing with large codebases.
Unfortunately, many seem to dismiss Ada after doing little more than looking at small code examples and complaining about verbosity...
Normally, raise an Exception; the outermost levels of the program should probably put the machine in a "safe" state if an exception is raised during operation e.g. turn off the radiation beam etc. I would have thought this is infinitely preferable to silently continuing after an error...
SPARK Ada allows the use of source-code annotations to denote information flow in a program, and can vastly reduce the chances of these sorts of problems (at the expense of more programmer time).
Standard Ada compilers can do a reasonable job of detecting some problems at compile-time, but SPARK seems to be the favoured method for safety-critical stuff.
Ada's advantages start to really show when you deal with much larger pieces of software; what appears verbose or overly-strict at a smaller scale provides valuable assistance when dealing with large codebases.
Unfortunately, many seem to dismiss Ada after doing little more than looking at small code examples and complaining about verbosity...