Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jgit-dev] Git API Exceptions

Matthias Sohn skrev 2011-12-16 00.43:
2011/12/16 Christian Halstrick <christian.halstrick@xxxxxxxxx>

     Hi,

>> It is impossble to add new checked exceptions to JGit commands without
>> breaking the
>> API. See http://egit.eclipse.org/r/#change,4809
>>
>> Shouldn't all call() throw a GitAPIException so callers can understand that
>> they
>> need to catch it in case something new comes along?

    I also agree. Here is why:

    The idea behind GitAPIException was to be a superclass of all checked
    exceptions API commands may throw. This should enable beginner-level users
    of the API to write code with minimal lines spent for error handling. Just
    catch only GitAPIException, throw an error when you get it and your
    code should compile.
    No need to understand and catch the dozens of specific exceptions when you start
    your first GitAPI program.

    Of course anybody writing serious code will want to deal with the
    specific exceptions. And if you start to throw new checked exceptions
    then I guess you expect users of the API to catch it.
    By introducing the rule that all checked exceptions have to be
    subclasses of GitAPIExceptions we have the chance to throw
    new checked exceptions without breaking the builds of our users.
    That's a good thing. The bad thing is that maybe nobody will
    start handling your new exception because the old code (not handling
    the new exception) is still compiling and working. I prefer
    not breaking the other users builds and having the freedom to
    introduce new exceptions when we need them.

+1

I made a few sketchy commits here:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=366914
JGit http://egit.eclipse.org/r/#change,4834
EGit http://egit.eclipse.org/r/#change,4836

-- robin



Back to the top