The only sane way is this:
try {
.. your code here
} catch (Throwable t) {
for (int i =0; i< 1000; i++)
java.awt.Toolkit.beep();
System.exit(-1);
}
Sometimes can use a Runtime.exec to delete the home directory for good
measure, but that means platform specific code.
On Aug 18, 8:58 am, Casper Bang <[email protected]> wrote:
> For that we have Runtime().getRuntime().addShutdownHook() no? That's
> what I used anyway with JSR-296, where Hans Muller had hardwired the
> System.exit() call in the framework.
>
> /Casper
>
> On 17 Aug., 23:11, Peter Becker <[email protected]> wrote:
>
>
>
> > Jess Holle wrote:
> > > Peter Becker wrote:
>
> > >> While I agree that you can have shared state, the scenario I had was a
> > >> clean worker: some data goes in before the thread gets started, other
> > >> data comes out at the end.
>
> > >> System.exit is a bad idea generally since you don't really know who is
> > >> going to use your code in the future. If you call System.exit in your
> > >> average Tomcat installation you'll probably take it down with you. I
> > >> tend to restrict the System.exit calls to main(..) methods.
>
> > > Low-level code shouldn't be catching VirtualMachineError -- it should
> > > always re-throw it.
>
> > I agree. But between the likelihood of this error being raised and the
> > damage done if you catch it when you shouldn't the risk seems quite
> > acceptable. Again: it is highly dependent on what your application is, I
> > would certainly not recommend this for a mission or even life critical
> > section of code.
>
> > > Only top-level thread handlers should catch these errors and call
> > > System.exit().
>
> > And what happens to other threads? If you call System.exit you should
> > have global knowledge of all application threads and their current
> > state. Even in the presence of a VirtualMachineError it is probably
> > better to try a clean shutdown. Calling System.exit could leave a lot of
> > things in inconsistent state that will be hard to recover from. Are all
> > your system's boundaries transactional?
>
> > Peter
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The
Java Posse" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---