[Mono-list] limited checked exceptions proposal discussion
David Jeske
jeske@chat.net
Tue, 8 Apr 2003 11:10:18 -0700
On Mon, Apr 07, 2003 at 02:36:06PM +1000, Fergus Henderson wrote:
> On 30-Mar-2003, David Jeske <jeske@chat.net> wrote:
> > Inferring thrown exceptions is not hard like
> > ML-style type inference -- It's trivial.
>
> How do you plan to handle virtual methods?
All virtual methods which can be overridden or called outside the
assembly will require throws declarations. From the chart below, this
includes "protected" and "public":
virtual cross-assembly override/call
-----------------------------------------------------------------
private not-allowed not-allowed
internal allowed not-allowed
protected internal allowed not-allowed
protected allowed allowed
public allowed allowed
Requiring throws declarations on "protected" and "public" virtual
methods is consistant with the treatment of delegates. Namely, because
virtual methods and delegates are both explaning a type-contract that
someone else may implement:
(a) the declaration must declare what exceptions can be thrown, and
(b) the implementor must meet the contract.
"internal" and "protected internal" virtual methods are allowed, but
are only accessable from within the assembly. Because all
implementations must occur within a single assembly, we can infer that
any exception which appears in an override of the virtual method may
appear at the virtual method call site. This allows us to not require
the "throws" declaration for these methods.
"private" virtual methods are not allowed.
--
David Jeske (N9LCA) + http://www.chat.net/~jeske/ + jeske@chat.net