[Insight-developers] better error message for exceptions in ThreadedGenerateData()

Gaëtan Lehmann gaetan.lehmann at jouy.inra.fr
Thu Sep 27 07:51:31 EDT 2007


Hi Luis,

I was looking at that problem, and noticed that you have commited a  
fix already.

Thank you !

Gaëtan


Le 13 sept. 07 à 14:41, Luis Ibanez a écrit :

>
> Hi Gaetan,
>
>
>          This patch is certainly a good idea.
>
>
> The current message is pretty much useless, since it doesn't
> tell us what the real problem was.
>
>
> I have two concerns with the patch:
>
>
> A) The description of the exception error is being passed to a
>    "const char * details;" that is declared outside the try{}.
>
>    I'm under the impression that the exception object only
>    exists inside the scope of the catch block. Therefore by the
>    time the catch block finishes the exception object will
>    be destroyed leaving the "details" pointer as a dangling
>    pointer, that we shouldn't use for throwing an exception
>    with an extended message.
>
>    We probably should make it a std::string instead...
>
>
>
> B) Adding a "catch( std::exception )" after a "catch(...)" will
>    not have any effect, since the catch(...) will take care of
>    any exception. We probably should put it before the catch-all
>    "catch(...)".
>
>
>
> Does that make sense ?
>
>
>
> One way or the other, I agree that we should fix this,
> We have had many frustrating encounters with the same
> error message that just tell than an exception happened
> but don't give any details of the original problem.
>
>
>
>     Thanks
>
>
>       Luis
>
>
> -----------------------
> Gaëtan Lehmann wrote:
>> Hi,
>> I'm debuging some threaded code currently, and I found the error   
>> report really non-informative. Something like
>> Progress  | 0 | 0.3 | 0.3 | 0.6terminate called after throwing an   
>> instance of 'itk::ExceptionObject'
>>   what():  /home/glehmann/src/Insight/Code/Common/  
>> itkMultiThreader.cxx:405:
>> itk::ERROR: MultiThreader(0x8176608): Exception occurred during   
>> SingleMethodExecute
>> I simply have no idea where the problem is, excepted that it may  
>> be  in a threaded method. So I tried to modified the MultiTreader  
>> code to  return more information about what happened. The patch is  
>> attached.  I'm now get something like
>> Progress  | 0 | 0.3 | 0.3 | 0.6terminate called after throwing an   
>> instance of 'itk::ExceptionObject'
>>   what():  /home/glehmann/src/Insight/Code/Common/  
>> itkMultiThreader.cxx:405:
>> itk::ERROR: MultiThreader(0x8176608): Exception occurred during   
>> SingleMethodExecute
>> /home/glehmann/src/contrib-itk/binaryAttributeMorphology/  
>> itkLabelPerimeterEstimationCalculator.h:83:
>> itk::ERROR: LabelPerimeterEstimationCalculator(0x81c6928):  
>> Unknown  label: 0
>> Abandon
>> Clearly, a better message to search for a bug :-)
>> I'm not a thread expert, so maybe there is something wrong with  
>> that  patch - any comment is welcome.
>> Gaëtan
>> -- 
>> Gaëtan Lehmann
>> Biologie du Développement et de la Reproduction
>> INRA de Jouy-en-Josas (France)
>> tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
>> http://voxel.jouy.inra.fr
>> --------------------------------------------------------------------- 
>> ---
>> _______________________________________________
>> Insight-developers mailing list
>> Insight-developers at itk.org
>> http://www.itk.org/mailman/listinfo/insight-developers

--
Gaëtan Lehmann
Biologie du Développement et de la Reproduction
INRA de Jouy-en-Josas (France)
tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
http://voxel.jouy.inra.fr



-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: =?ISO-8859-1?Q?Ceci_est_une_signature_=E9lectronique_PGP?=
Url : http://www.itk.org/mailman/private/insight-developers/attachments/20070927/f45db79b/PGP.pgp


More information about the Insight-developers mailing list