<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="&#1;" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.5pt;
        font-family:Consolas;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:Consolas;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoPlainText>Hi<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>I'm trying to provide an example where you need more
information about an exception than just an exception with a text.<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>If you build an application on FDO that needs to <i>handle</i>
exceptions you need information about the problem that actually caused the
exception, means more than a text.<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>A general example: Your Application needs a column
MY_NUMBER in every feature class where you store some information. When you want
to write something in this column and the column does not exist, you want to
add the column programmatically. But every provider is complaining with
different text messages that this column does not exist.<o:p></o:p></p>

<p class=MsoPlainText>Oracle throws <i>ORA-00904: &quot;MY_NUMBER&quot;:
invalid identifier</i><o:p></o:p></p>

<p class=MsoPlainText>SQLite throws <i>no such column: MY_NUMBER</i><o:p></o:p></p>

<p class=MsoPlainText>How are you going to handle this exception? There is no
way doing it generally.<o:p></o:p></p>

<p class=MsoPlainText>A solution would be that all FDO providers are throwing
and exception ColumnDoesNotExist or a FdoException with an FDO error code, e.
g. FDO-001 or whatever.<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>Another example with a data store specific error. You
have code that wants to select data from a Oracle based feature class. If you
don&#8217;t have spatial index defined on this table you will get an Oracle
error. E. g. <i>ORA-13226: interface not supported without a spatial index.<o:p></o:p></i></p>

<p class=MsoPlainText>So if a program wants to handle this exception it has to know
what happened, getting the error code 13226. You could add the spatial index
again over ISQLCommand. This is an error that can only happen on a Oracle data
store, therefore it is provider specific.<o:p></o:p></p>

<p class=MsoPlainText>This example is specific to a certain FDO provider,
namely Oracle. You need to handle this specific to Oracle Provider, so you need
an provider specific native error code, ORA-13226.<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>Philipp<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>-----Original Message-----<br>
From: fdo-internals-bounces@lists.osgeo.org
[mailto:fdo-internals-bounces@lists.osgeo.org] On Behalf Of Frank Warmerdam
(External)<br>
Sent: Tuesday, June 02, 2009 4:29 AM<br>
To: FDO Internals Mail List<br>
Subject: Re: [fdo-internals] Enhanced Exception Types in FDO<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>Greg Boone wrote:<o:p></o:p></p>

<p class=MsoPlainText>&gt; Hi All,<o:p></o:p></p>

<p class=MsoPlainText>&gt; <o:p></o:p></p>

<p class=MsoPlainText>&gt;&nbsp; <o:p></o:p></p>

<p class=MsoPlainText>&gt; <o:p></o:p></p>

<p class=MsoPlainText>&gt; I am currently struggling with the topic of error
handling and <o:p></o:p></p>

<p class=MsoPlainText>&gt; exceptions in FDO, FDO Providers and applications
that use them. I would <o:p></o:p></p>

<p class=MsoPlainText>&gt; like to get some feedback from the community on how
we could possibly <o:p></o:p></p>

<p class=MsoPlainText>&gt; resolve this issue in the next planned release of
FDO (trunk).<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>Greg,<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>I wonder if you could talk us through a couple examples
where the current<o:p></o:p></p>

<p class=MsoPlainText>system is inadequate.&nbsp; I can see value in adding
some additional exception<o:p></o:p></p>

<p class=MsoPlainText>classes to support finer grained error handling.<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>I'm concerned that exposing native error codes and
provider id's as part<o:p></o:p></p>

<p class=MsoPlainText>of exceptions is giving up on genericity in the FDO
API.&nbsp; But if you can<o:p></o:p></p>

<p class=MsoPlainText>illustrate cases where this is critical it could be ok.<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>&nbsp;From the point of view of the GDAL provider, I have
no need to provide<o:p></o:p></p>

<p class=MsoPlainText>finer grained error information from GDAL itself.&nbsp;
GDAL has a very thin<o:p></o:p></p>

<p class=MsoPlainText>set of native error codes, and essentially the error text
(which is<o:p></o:p></p>

<p class=MsoPlainText>formatted with potentially lots of detail) is the
important cargo.<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>Of course, I have not done much application writing on
FDO so it is hard<o:p></o:p></p>

<p class=MsoPlainText>for me to know what things applications writers are
having trouble handling.<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>Best regards,<o:p></o:p></p>

<p class=MsoPlainText>-- <o:p></o:p></p>

<p class=MsoPlainText>---------------------------------------+--------------------------------------<o:p></o:p></p>

<p class=MsoPlainText>I set the clouds in motion - turn up&nbsp;&nbsp; | Frank
Warmerdam, warmerdam@pobox.com<o:p></o:p></p>

<p class=MsoPlainText>light and sound - activate the windows |
http://pobox.com/~warmerdam<o:p></o:p></p>

<p class=MsoPlainText>and watch the world go round - Rush&nbsp;&nbsp;&nbsp; |
Geospatial Programmer for Rent<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>_______________________________________________<o:p></o:p></p>

<p class=MsoPlainText>fdo-internals mailing list<o:p></o:p></p>

<p class=MsoPlainText>fdo-internals@lists.osgeo.org<o:p></o:p></p>

<p class=MsoPlainText>http://lists.osgeo.org/mailman/listinfo/fdo-internals<o:p></o:p></p>

</div>

</body>

</html>