Let's see if I can recreate it via unit test.
On Dec 17, 9:30 am, "Fabio Maulo" <[email protected]> wrote:
> Do you can create a NUnit test
> casehttp://nhforge.org/blogs/nhibernate/archive/2008/10/04/the-best-way-t...
>
> to recreate your problem ?
>
> Then you can create a JIRA ticket with your issue and the test to reproduce
> it.
>
> 2008/12/17 epitka <[email protected]>
>
>
>
> > No, Item get's loaded via repository, and then I unbind values on the
> > form to underlying object. If for example there is a rule validation
> > on the let's say "name" field, then setter will throw
> > ValidationException. I can step through the code and see it with my
> > own eyes throwing correct exception.
>
> > On Dec 17, 9:09 am, "Fabio Maulo" <[email protected]> wrote:
> > > are you throwing an exception in a fresh load from DB ?
>
> > > 2008/12/17 epitka <[email protected]>
>
> > > > I tried it with ArgumentOut..., same thing.
>
> > > > On Dec 17, 3:44 am, "Richard \(Google\)" <[email protected]>
> > > > wrote:
> > > > > That does sound strange - and if it's re-thrown I would expect the
> > line
> > > > > number in the (final) stack trace to be line 78 (not 60).
>
> > > > > Are you able to throw other exceptions types across the proxy? For
> > > > example,
> > > > > does it work if you throw an ArgumentOutOfRangeException? (If it
> > does,
> > > > it
> > > > > might suggest there's something unusual about your custom exception
> > > > class)
>
> > > > > --------------------------------------------------
> > > > > From: "epitka" <[email protected]>
> > > > > Sent: Tuesday, December 16, 2008 11:28 PM
> > > > > To: "nhusers" <[email protected]>
> > > > > Subject: [nhusers] Re: CastleLazyInitializer does not propagate
> > > > exceptions
> > > > > correctly
>
> > > > > > I stand corrected by the last statement. It does unwrap it
> > correctly,
> > > > > > as I just assigned the unwrapped value to temp variable and it is
> > of
> > > > > > my type, but then throw piece is doing something weird as it is not
> > > > > > coming across as my exception type. hmmmm
>
> > > > > > On Dec 16, 5:16 pm, epitka <[email protected]> wrote:
> > > > > >> Ok, I debugged and I can see my exception thrown and then the next
> > > > > >> thing is that TargetInvocationException is caught. I looked at the
> > > > > >> stack trace of the exception and here is what is says:
> > > > > >> at System.RuntimeMethodHandle._InvokeMethodFast(Object target,
> > > > > >> Object[] arguments, SignatureStruct& sig, MethodAttributes
> > > > > >> methodAttributes, RuntimeTypeHandle typeOwner)
> > > > > >> at System.RuntimeMethodHandle.InvokeMethodFast(Object target,
> > Object
> > > > > >> [] arguments, Signature sig, MethodAttributes methodAttributes,
> > > > > >> RuntimeTypeHandle typeOwner)
> > > > > >> at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,
> > > > > >> BindingFlags invokeAttr, Binder binder, Object[] parameters,
> > > > > >> CultureInfo culture, Boolean skipVisibilityChecks)
> > > > > >> at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,
> > > > > >> BindingFlags invokeAttr, Binder binder, Object[] parameters,
> > > > > >> CultureInfo culture)
> > > > > >> at System.Reflection.MethodBase.Invoke(Object obj, Object[]
> > > > > >> parameters)
> > > > > >> at NHibernate.Proxy.Poco.Castle.CastleLazyInitializer.Intercept
> > > > > >> (IInvocation invocation) in C:\Users\epitka\UltiMod\NHibernate
> > > > > >> \NHibernate-2.0.1.GA-src\src\NHibernate\Proxy\Poco\Castle
> > > > > >> \CastleLazyInitializer.cs:line 60
>
> > > > > >> Looking at the line sixty it does this.
>
> > > > > >> if (invocation.ReturnValue == InvokeImplementation)
> > > > > >> {
> > > > > >> invocation.ReturnValue = invocation.Method.Invoke
> > > > > >> (GetImplementation(), invocation.Arguments);
> > > > > >> return;
> > > > > >> }
>
> > > > > >> which will invoke my property setter that throws
> > ValidationException,
> > > > > >> which is then caught in this block
>
> > > > > >> catch (TargetInvocationException tie)
> > > > > >> {
> > > > > >> // Propagate the inner exception so that the proxy throws the same
> > > > > >> exception as
> > > > > >> // the real object would
> > > > > >> throw ReflectHelper.UnwrapTargetInvocationException(tie);
> > > > > >> }
>
> > > > > >> which does not really unwrap it at all, It just returns regular
> > > > > >> exception with my exception being inner one.
>
> > > > > >> On Dec 16, 12:04 pm, "Richard \(Google\)" <
> > [email protected]>
> > > > > >> wrote:
>
> > > > > >> > Hi epitka,
>
> > > > > >> > Can you get the full stack trace for the exception that is
> > thrown?
>
> > > > > >> > The line:
> > > > > >> > ''System.Reflection.TargetInvocationException' occurred in
> > > > > >> > mscorlib.dll'
> > > > > >> > suggests (from mscorlib.dll) that the error you are getting is
> > > > coming
> > > > > >> > from
> > > > > >> > the .Net framework - not from NHibernate.
>
> > > > > >> > The code for CastLazyInitalizer catches any exceptions and
> > unwraps
> > > > > >> > them - so
> > > > > >> > it shouldn't change the original exception thrown (see line
> > > > > >> > 74):
> > > >http://nhibernate.svn.sourceforge.net/viewvc/nhibernate/branches/2.0..
> > ..
>
> > > > > >> > Regards,
> > > > > >> > Richard
>
> > > > > >> > --------------------------------------------------
> > > > > >> > From: "epitka" <[email protected]>
> > > > > >> > Sent: Tuesday, December 16, 2008 5:46 PM
> > > > > >> > To: "nhusers" <[email protected]>
> > > > > >> > Subject: [nhusers] Re: CastleLazyInitializer does not propagate
> > > > > >> > exceptions
> > > > > >> > correctly
>
> > > > > >> > > Ok, here is what I see in output window
>
> > > > > >> > > 'w3wp.exe' (Managed): Loaded 'DynamicProxyGenAssembly2'
> > > > > >> > > 'w3wp.exe' (Managed): Loaded 'CastleDynProxy2.dll'
> > > > > >> > > 'w3wp.exe' (Managed): Loaded
> > > > 'C:\Windows\assembly\GAC_32\ISymWrapper
> > > > > >> > > \2.0.0.0__b03f5f7f11d50a3a\ISymWrapper.dll'
> > > > > >> > > A first chance exception of type
> > > > > >> > > 'dnnSphere.Exceptions.ValidationException' occurred in
> > > > > >> > > dnnSphere.Meta.DLL
> > > > > >> > > A first chance exception of type
> > > > > >> > > 'System.Reflection.TargetInvocationException' occurred in
> > > > > >> > > mscorlib.dll
>
> > > > > >> > > and I am catching it like this. I have a workaround where I
> > look
> > > > at
> > > > > >> > > he
> > > > > >> > > inner exception.
>
> > > > > >> > > // *** Handles any errors that are raise from the property
> > setters
> > > > > >> > > catch (ValidationException ve)
> > > > > >> > > {
> > > > > >> > > this.HandleUnbindingError(Item, new
> > > > > >> > > ValidationErrorException(ve.Message));
> > > > > >> > > }
> > > > > >> > > catch (Exception ex)
> > > > > >> > > {
> > > > > >> > > //this is a hack to NHibernate proxy exceptions
> > > > > >> > > if (ex.InnerException is ValidationException)
> > > > > >> > > {
> > > > > >> > > this.HandleUnbindingError(Item, new
> > > > > >> > > ValidationErrorException(ex.InnerException.Message));
> > > > > >> > > }
> > > > > >> > > else
> > > > > >> > > {
> > > > > >> > > this.HandleUnbindingError(Item, ex);
> > > > > >> > > ResultFlag = false;
> > > > > >> > > }
>
> > > > > >> > > }
>
> > > > > >> > > On Dec 16, 7:34 am, epitka <[email protected]> wrote:
> > > > > >> > >> Will do, it will take several hours before I get back to it.
> > Got
> > > > to
> > > > > >> > >> take kids to school.
>
> > > > > >> > >> On Dec 16, 7:16 am, "Richard \(Google\)" <
> > > > [email protected]>
> > > > > >> > >> wrote:
>
> > > > > >> > >> > Can you post a stack trace?
>
> > > > > >> > >> > From: first last
> > > > > >> > >> > Sent: Tuesday, December 16, 2008 1:02 PM
> > > > > >> > >> > To: [email protected]
> > > > > >> > >> > Subject: [nhusers] Re: CastleLazyInitializer does not
> > propagate
> > > > > >> > >> > exceptions correctly
>
> > > > > >> > >> > 2.0
>
> > ---------------------------------------------------------------------------
> > > > > >> > >> > -----
> > > > > >> > >> > From: Richard (Google) <[email protected]>
> > > > > >> > >> > To: nhusers <[email protected]>
> > > > > >> > >> > Sent: Tuesday, December 16, 2008 4:30:44 AM
> > > > > >> > >> > Subject: [nhusers] Re: CastleLazyInitializer does not
> > propagate
> > > > > >> > >> > exceptions correctly
>
> > > > > >> > >> > Hi epitka,
>
> > > > > >> > >> > What version of NH are you using?
>
> > > > > >> > >> > This was sorted for V2.0 I think.
>
> > > > > >> > >> > Regards,
> > > > > >> > >> > Richard
>
> > > > > >> > >> > --------------------------------------------------
> > > > > >> > >> > From: "epitka" <[email protected]>
> > > > > >> > >> > Sent: Monday, December 15, 2008 11:07 PM
> > > > > >> > >> > To: "nhusers" <[email protected]>
> > > > > >> > >> > Subject: [nhusers] CastleLazyInitializer does not propagate
> > > > > >> > >> > exceptions
> > > > > >> > >> > correctly
>
> > > > > >> > >> > > This code in CastleLazyInitializer returns generic
> > Exception
> > > > > >> > >> > > with a
> > > > > >> > >> > > generic "Target of invoication ..." message. I am rasing
> > > > > >> > >> > > ValidationException in my code yet I cannot catch it as
> > > > > >> > >> > > ValidationException only as Exception. My exception is
> > > > actually
> > > > > >> > >> > > in
> > > > > >> > >> > > innerException. How am I supposed to catch custom
> > exceptions?
>
> > > > > >> > >> > > /// <summary>
> > > > > >> > >> > > /// Invoke the actual Property/Method using the Proxy or
> > > > > >> > >> > > instantiate
> > > > > >> > >> > > the actual
> > > > > >> > >> > > /// object and use it when the Proxy can't handle the
> > method.
> > > > > >> > >> > > /// </summary>
> > > > > >> > >> > > /// <param name="invocation">The <see
> > cref="IInvocation"/>
> > > > from
> > > > > >> > >> > > the
> > > > > >> > >> > > generated Castle.DynamicProxy.</param>
> > > > > >> > >> > > public virtual void Intercept(IInvocation invocation)
> > > > > >> > >> > > {
> > > > > >> > >> > > try
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---