Laura,

Great work indeed. Very much appreciated.

I really do not have much to add to Mike's comments. I would rather keep
Http in transport & protocol exceptions, though, but I could also live
without.

I agree with Mike that chaining mechanism should be pushed up to the
HttpException level. I'd also override printStackTrace() methods to
include root exception's stack trace.

  public void printStackTrace() {
    super.printStackTrace();
    if (cause != null) {
      System.err.println("Caused by:");
      cause.printStackTrace();
    }
  }

  public void printStackTrace(java.io.PrintStream ps) {
    super.printStackTrace(ps);
    if (cause != null) {
      ps.println("Caused by:");
      cause.printStackTrace(ps);
    }
  }

  public void printStackTrace(java.io.PrintWriter pw) {
    super.printStackTrace(pw);
    if (cause != null) {
      pw.println("Caused by:");
      cause.printStackTrace(pw);
    }
  }

Oleg



On Sun, 2003-07-13 at 07:15, Michael Becke wrote:
> Very nice work Laura.  Thank you for taking the initiative on this one. 
>   Please see the in-lined comments below.
> 
> > I'm attaching a preliminary patch for this, following Oleg's proposal 
> > on the
> > mailing list.  Here are some areas where I'd like feedback:
> >
> > - Is AuthenticationException too broad?  Should there be different 
> > exceptions for:
> >   - Incorrect credentials / password / login / whatever, vs.
> >   - Other problem: no such provider, unknown auth type, ..
> 
> Possibly.  I could see this extra information as quite useful.  My only 
> worry would be that we have too many exception types.
> 
> > - I added an HttpInterruptedException for cases where client code 
> > tells us to
> > abort a transaction.
> >   - Should I leave this out until we actually add the abort code?
> >   - Should it be called HttpAbortedException instead?  Or something 
> > else?
> 
> I think we will probably need it but I would say to leave it out for 
> now.  We can always add it when the time comes.
> 
> I think HttpAbortedException is better.
> 
> > - I'm starting to wonder if all these classes really need "Http" at the
> > beginning of their names.  HttpException definitely does, for 
> > compatibility
> > reasons if nothing else.  But could the others just be 
> > ProtocolException,
> > TransportException, etc?  There's a chance for a collision if a Java 
> > file uses
> > two different network libraries that both have a ProtocolException, 
> > but it
> > doesn't seem to likely.
> 
> I say lose the Http.  It seems a little redundant.  No worries about 
> name collision.  That's the beauty of packages.
> 
> > - I added a primitive exception chaining mechanism to 
> > HttpTransportException.
> > Right now it wraps any Throwable.  Oleg had suggested wrapping just 
> > IOException.
> >  Any preferences?  Also, how fancy does the chaining mechanism need to 
> > be?  I'm
> > happy with just "getCause()", but if people want me to I could add 
> > some of the
> > other exception chain accessors that commons-lang uses in its classes.
> 
> I think we should push the cause all the way up to the HttpException 
> level.  Nestable exceptions occur in other places than just IO.  Your 
> TODO example of NTLM IllegalBlockSize is a good one.  I imagine there 
> will be a few involving URIExceptions as well.
> 
> I think leaving just getCause() for now is fine.  The most important 
> part is getting the hierarchy right.  We can add bells and whistles at 
> a later time.
> 
> Now that we have this organized a little better (thank you Laura), how 
> do we imagine that a user of HttpClient will take advantage of these 
> exceptions?  If we only throw an HttpException at the HttpClient level, 
> how do we plan to expose the other exception types?  Will we have 
> examples that show all of the possible exceptions?  Will there be a 
> need for utility methods for parsing/handling the various errors?  Just 
> a few random questions. I haven't really thought through it yet.
> 
> Good night.
> 
> Mike
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to