Let's put it this way. Let's say your example of bad leaders was Hitler, Mao, Stalin...and Jimmy Carter. Surely they all made mistakes, but one of them doesn't belong in the "set" of the others. Java does provide safety at run-time in the case of dynamic hazards, the same cannot be said for C/C++. C/C++ are a different level of evil lacking even run-time safety, so its weird, and perhaps intellectually dishonest, that you would lump them all together as "unsafe." Anyways, there is a name for this trope [1,2].
Now take your safest language, I guess that would be Haskell, even Maybe doesn't eliminate all dynamic hazards, especially if there is no way to cover from the Nothing case (it just makes you check everything, it doesn't eliminate the problem).
[1] http://tvtropes.org/pmwiki/pmwiki.php/Main/ArsonMurderAndJay...
[2] http://tvtropes.org/pmwiki/pmwiki.php/Main/AllCrimesAreEqual
I agree that Java is safer than C and C++, mostly by virtue of not having pointers. However I would say that Haskell is safer than Java by a far greater degree than the degree that Java is safer than C and C++. You can encode many, many more invariants in types.
As to Haskell being unsafe, of course it is to some degree, since you can't encode, say, termination in the type system. But I'd have to know what specific examples you have in mind before responding further.