A: 

Is there a reason you can't catch the AWTException in the constructor and throw it wrapped inside a RuntimeException?

public Robo() throws AWTException{
    try {
        r = new Robot();
    } catch(AWTException e) {
        throw new RuntimeException("Failed to create java.awt.Robot for Robo instance", e);
    }
}
Suppressingfire
+1  A: 

Just use the throws AWTException version, as java.awt.Robot only throws this exception when GraphicsEnvironment.isHeadless() is true.

Which means you can't run your app with Robot anyway.

jitter