The runtime exeception can be caught, but in this example you are not catching it. The exact output is:
1
4
Exception in
thread "main" java.lang.RuntimeException
What is happening is that you catch the InterruptedException that you threw, and you catch it in the first try{} block. Then in the catch statement for InterruptedException you throw a new exception, but this is not in a try{} block, so it is not caught. Barry, you are right when you say that 1 gets printed since this is caught, but then an error occurs since the RuntimeException is not caught, so it kicks out to the finally block ("4") and then the program terminates.
[This message has been edited by bill bozeman (edited October 24, 2000).]