EasyHack, fdo#46808, Adapt UNO services to new style, Phase II

Stephan Bergmann sbergman at redhat.com
Tue Apr 3 08:10:02 PDT 2012


On 04/03/2012 03:11 PM, Noel Grandin wrote:
> I'm working my way through the codebase, translating the easy stuff.
> What is the cleanest translation of this:
>
> Reference< graphic::XGraphicProvider > xGraphProv(
> xFact->createInstance( C2U("com.sun.star.graphic.GraphicProvider")),
> uno::UNO_QUERY_THROW );
>
> Normally I would use
>
> Reference< graphic::XGraphicProvider > xGraphProv(
> graphic::GraphicProvider::create(xContext) );
>
> But that doesn't throw an exception on error.

It does throw.  The constructors are guaranteed to either return a 
non-null reference or throw an exception (the default constructors all 
throw com.sun.star.uno.DeploymentException, which is derived from 
RuntimeException; explicit constructors can in principle also throw 
other exceptions).

So you'd probably also come across code like

   Reference<X> x(...createInstance...);
   if (x.is()) { ... }

that you can simplify by using a constructor and removing the x.is() check.

Stephan


More information about the LibreOffice mailing list