Douglas, Thanks for testing. OK, so I tested in isolation and in fact the code errors correctly.
So, I realised that my actual scenario was that the code is called in a method from On Web Connection. I can set a breakpoint at the offending line but the debugger aborts at the next line of code after the one that should trigger a syntax error and code execution ceases. In fact I tried to create a deliberate syntax error and still see that no syntax error is displayed and code execution ceases. Not sure if this is a bug or behaviour by design? Possibly the error is returned to the client making the request but in my case it's an external service making the request and I can't see the response the service receives other than the fact it appears to fail. Regards, Narinder Chandi, ToolBox Systems Ltd. I am available for new consulting opportunities… http://4d.1045681.n5.nabble.com/ANN-4D-Developer-Available-td5765443.html -- -----Original Message----- From: Douglas von Roeder <dvonroe...@gmail.com> Date: Friday, 20 September 2019 at 19:20 To: 4D Tech Mailing List <4d_tech@lists.4d.com> Cc: Narinder Chandi <4dtechmailingl...@toolbox.uk.com> Subject: Re: Silent Failure when Constructing an Object Narinder: I just ran the code you posted on 17R4 (Mac and Windows) and I’m getting an error message - “Object or a Collection expected” After the code completes execution, has 4D created .bar dynamically? -- Douglas von Roeder 949-910-4084 On Fri, Sep 20, 2019 at 11:02 AM Narinder Chandi via 4D_Tech <4d_tech@lists.4d.com> wrote: So, I am writing some code and using C_OBJECT. Using the following contrived object as an example: C_OBJECT($object) $object:=New object $object.foo:=New object $object.foo.foo1:="foo1" $object.foo.foo2:="foo2" $object.bar:=New object $object.bar.bar1:="bar1" $object.bar.bar2:="bar2" The code executes as expected. Sometimes I might accidentally forget to initialise a nested object - it happens! So, if I replace the above with: C_OBJECT($object) $object:=New object $object.foo:=New object $object.foo.foo1:="foo1" $object.foo.foo2:="foo2" $object.bar.bar1:="bar1" $object.bar.bar2:="bar2" i.e. I forget "$object.bar:=New object" then the code will silently fail. Can somebody tell me why the interpreter does not raise an error in this situation? This was tested with 17.1 and 17.2 on Mac and the behaviour was the same (i.e. silent code failure) in both versions. In the docs for C_OBJECT: https://doc.4d.com/4Dv17/4D/17.3/C-OBJECT.301-4621707.en.html it states: "Important: The C_OBJECT command does not create an object named variable. If you want to access the properties of the object itself using object notation, you must first initialize it using the New object command, otherwise a syntax error is returned (see example)." That doesn't seem to be the case - no syntax error is raised and the code also compiles?! Can somebody point out what I am missing here? Thanks. Regards, Narinder Chandi, ToolBox Systems Ltd. I am available for new consulting opportunities… http://4d.1045681.n5.nabble.com/ANN-4D-Developer-Available-td5765443.html -- ********************************************************************** 4D Internet Users Group (4D iNUG) Archive: http://lists.4d.com/archives.html Options: https://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com ********************************************************************** ********************************************************************** 4D Internet Users Group (4D iNUG) Archive: http://lists.4d.com/archives.html Options: https://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **********************************************************************