Adding a throws UncheckedException to an API does not require code calling
that API to either catch that exception or declare it to be rethrown. The
compiler will not help you here by enforcing handling unchecked
exceptions.
public class Unchecked {
public void foo() throws RuntimeException {
throw new RuntimeException();
}
public void bar() {
foo();
}
}
compiles with no warning that bar() must handle the unchecked exception
when calling foo(). So there is no more "safety" to be had by declaring
unchecked exceptions in API.
As I side note, I think checked exceptions are hideous but they are part
of Java so we deal with them.
PS. I would also suggest you use the Shift key when writing as your
writing is very difficult to read without proper capitalization. It begins
to look like one long run-on sentence. :-)
--
BJ Hargrave
Senior Technical Staff Member, IBM
OSGi Fellow and CTO of the OSGi Alliance
[email protected]
office: +1 386 848 1781
mobile: +1 386 848 3788
From: <[email protected]>
To: <[email protected]>
Date: 2010/09/13 14:46
Subject: Re: [osgi-dev] org.osgi.framework.BundleContext has many
javadoc @throws tags but missing most "throws" clauses
Sent by: [email protected]
thanks for the explanation, BJ.
the genesis of the patch was that, during eclipse PDE, i encountered at
least one instance where the compiler could have warned about a potential
throw that was not caught until runtime because the original developer did
not heed the javadoc tags, and the code could have caught the exception
thrown from ungetService() and continued cleanup without any real adverse
side-effects.
and there is this:
http://download.oracle.com/javase/tutorial/essential/exceptions/runtime.html
"… the compiler does not require that you catch or specify runtime
exceptions (although you can).
Generally speaking, do not throw a RuntimeException or create a subclass
of RuntimeException simply because you don't want to be bothered with
specifying the exceptions your methods can throw."
i understand the general convention. and i understand in the case of the
calling PDE code, the problem lies perhaps in the logic of the shutdown
being possibly faulty. i'm just also in favor of catching stuff like this
at compile time, and going against convention in this case would have
enforced this to be dealt with up front.
i'll leave it at that. if it changes in a future release, great. if not,
i appreciate the consideration and your time in thinking about it in any
case. thanks.
++ kirk
On 2010-Sep-13, at 11:00 AM, ext BJ Hargrave wrote:
As a API design convention, The OSGi API does not declare unchecked
exceptions in the API. They are just documented in the @throws javadoc
tag. As required by the Java language, all checked exception are declared
in the API.
See item 62 in Effective Java, 2nd Edition.
--
BJ Hargrave
Senior Technical Staff Member, IBM
OSGi Fellow and CTO of the OSGi Alliance
[email protected]
office: +1 386 848 1781
mobile: +1 386 848 3788
From: <[email protected]>
To: <[email protected]>
Date: 2010/09/13 13:32
Subject: [osgi-dev] org.osgi.framework.BundleContext has many
javadoc @throws tags but missing most "throws" clauses
Sent by: [email protected]
org.osgi.framework.BundleContext has javadoc containing many @throws tags.
however most of the interfaces are missing the corresponding throw
clauses.
the fact that some of the function interfaces have some (but in some cases
not all) such thrown exceptions identified indicates that there probably
is not a policy governing this.
having all throws clauses included could help identify at compile time
instances in callers that either need to handle or need to report they
will throw these exceptions.
find attached a simple patch that creates "throws" clauses from all
"@throws" tags found in BundleContext.
++ kirk beitz : nokia : austin + san diego : [email protected] ++
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev