In the past, I didn't have much thoughts about checked exceptions. I kind of grew up with them, and I had no hard feelings about them (as long as API designers used them with caution). So an article in the most recent Java Magazin by Arno Haase took me by surprise, how easy checked exceptions can be bypassed:

public class Unchecker {

    public static void main(String[] args) {
        throwUnchecked(new java.io.IOException());
    }

    private static void throwUnchecked(Exception exception) {
        Unchecker.<RuntimeException>throwIt(exception);
    }

    private static <E extends Exception> void throwIt(Exception e) throws E {
        throw (E)e;
    }
}

In the code above, the main method doesn't declare an checked IOExcecption, but it throws it nevertheless:
$ java Unchecker
Exception in thread "main" java.io.IOException
        at Unchecker.main(Unchecker.java:4)
And as a funny sidenote: the compiler prevents you from handling this exception with a regular "catch" clause...
Type erasure FTW ;)