Galen O'Sullivan created GEODE-2375:
---------------------------------------

             Summary: GemFireException should not inherit from RuntimeException
                 Key: GEODE-2375
                 URL: https://issues.apache.org/jira/browse/GEODE-2375
             Project: Geode
          Issue Type: Bug
          Components: core, general
            Reporter: Galen O'Sullivan


{{GemFireException}} inherits from {{RuntimeException}}, which means that the 
majority of exceptions in Geode are unchecked. This means that we don't have 
the type system helping us to check potential failure conditions of our code, 
and it's not clear which functions may throw exceptions as a part of their 
nomal failure modes -- for example, {{ReplyException}} has a 
{{handleAsUnexpected}} method that seems to indicate that a normal 
{{ReplyException}} is not unexpected -- but that's not what the type 
inheritance says. {{GemFireException}} accounts for most of the exceptions in 
the codebase.

Even if we were to convert most of the existing instances of 
{{GemFireException}} to {{GemFireRuntimeException}}, developers (especially new 
ones) would still be tempted to use {{GemFireException}} for new exceptions.

Perhaps the best way to solve this (if we want all our exceptions to inherit 
from a central exception type, which I'm not entirely sold on) would be to 
create a new {{GeodeUncheckedException}} and {{GeodeCheckedException}}, and 
deprecate both kinds of {{GemFireException}}? Then we could convert old 
exceptions as time permits.

There's a significant amount of work involved here whatever way we decide to 
change it.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to