> -----Original Message----- > From: Rodrigo Kumpera <[EMAIL PROTECTED]> > Sent: Oct 21, 2005 12:08 PM > To: [email protected] > Subject: Re: Some questions about the architecture > ...snip... > > I agree that the verifier should look into this, but what happens if > > you get a divide by zero error? Or a null pointer exception? These > > are not available to the verifier, but are runtime conditions that > > do not arise in advance. Therefore, they need to be checked at > > run time and exceptions thrown. These two examples are subclasses > > to java.lang.RuntimeException and may be thrown at any time. > > There are no diferences from the exception handling (define the catch > of an exception) perspective between explicit thrown exceptions (no > matter the Throwable subclass) and runtime generated ones (CCE, NPE, > etc). The only diferences are on the verifier (verify checked > exceptions) and how they are trapped (NPE could use the segv signal). > I don't understand your (un)protected exception classification. >
Perhaps I need to use more standard terminology. In place of "unprotected", I should say "uncaught". (Sorry about that! I'll try to get my terms straight here.) This means an exception without an explicit handler, which could include a java.lang.RuntimeException or a java.lang.Error. The VM spec sections 2.16, 2.16.2, and 2.17.7 discuss uncaught exceptions. This is why I have felt I had to make a distinction and so implement my code. > > > Try taking a look at the JVM specification, section 2.16. I have tried > > to write my code to implement the functionality described there. I > > would appreciate you studying section 2.16 and comparing it against > > my implementation of the exception mechanism to see if you find > > any flaws in my logic. If so, please let me know what you find. One > > question that I have is that in 'jvm/src/opcode.c' there are a number > > of references to thread_throw_exception(). The first parameter is the > > type of event, either a java.lang.Error or a java.lang.Exception or > > a java.lang.Throwable. Can I get by without java.lang.Throwable? > > Everything I throw so far is either an Error or an Exception. I just > > included Throwable in case I had something else because I think I > > remember something in the spec about "something that is not an > > Error or an Exception," so I thought I would try to cover all angles. > > Thanks for your help. > > > > > > Dan Lydick > > > > --- > > Reading "2.16.2 Handling an Exception" I could not find any diference > between how Exception and Error exceptions are handled. The section > only defined how an expression/statement is dynamically enclosed by a > catch block. And even then, there are no distinction between explicit > throws, runtime generated exceptions and asynchronous exceptions. > VM spec section 2.16.4 makes that distinction, but I'm still wondering if I can get by without distinguishing java.lang.Throwable here. Dan Lydick
