You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Anthony Baker (JIRA)" <ji...@apache.org> on 2018/04/19 20:41:00 UTC
[jira] [Updated] (GEODE-2375) GemFireException should not inherit
from RuntimeException
[ https://issues.apache.org/jira/browse/GEODE-2375?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Anthony Baker updated GEODE-2375:
---------------------------------
Issue Type: Improvement (was: Bug)
> GemFireException should not inherit from RuntimeException
> ---------------------------------------------------------
>
> Key: GEODE-2375
> URL: https://issues.apache.org/jira/browse/GEODE-2375
> Project: Geode
> Issue Type: Improvement
> Components: core, general
> Reporter: Galen O'Sullivan
> Priority: Major
>
> {{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
(v7.6.3#76005)