<html><head><style id="css_styles" type="text/css"><!--blockquote.cite { margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:0px; border-left: 1px solid #cccccc }
blockquote.cite2 {margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:0px; border-left: 1px solid #cccccc; margin-top: 3px; padding-top: 0px; }
a img { border: 0px; }
table { border-collapse: collapse; }
li[style='text-align: center;'], li[style='text-align: center; '], li[style='text-align: right;'], li[style='text-align: right; '] {  list-style-position: inside;}
body { font-family: 'Segoe UI'; font-size: 12pt; }
.quote { margin-left: 1em; margin-right: 1em; border-left: 5px #ebebeb solid; padding-left: 0.3em; }
--></style></head><body><div>Hi Mark,</div>
<div style="clear:both"><br /></div>
<div><br /></div>
<div>
<div>On 30-Jun-24 11:48:16 PM, "Mark Volkmann via Cuis-dev" <<a href="mailto:cuis-dev@lists.cuis.st">cuis-dev@lists.cuis.st</a>> wrote:</div></div><div><br /></div>
<div id="x7c5e2a57bc83487"><blockquote cite="CAFfRWnXZ4pnAq5y++qW3Ujk03jpys=DUWNR_a1h6uP3RU6XUYA@mail.gmail.com" type="cite" class="cite2">
<div dir="ltr">I'm studying how the doesNotUnderstand method is used. I see that the implementation in the Object class signals a MessageNotUnderstood error. But I haven't been able to find the code that catches that and opens a MessageNotUnderstood window. Where does that happen?</div></blockquote><div id="x7c5e2a57bc83487">A quick summary of events:</div><div id="x7c5e2a57bc83487"><br /></div><div id="x7c5e2a57bc83487">1. VM sends <font color="#5DA44F">doesNotUnderstand:</font><span> message - in your particulr case the one implemented in Object will be called</span></div><div id="x7c5e2a57bc83487"><span>2. Object's </span><font color="#5DA44F">doesNotUnderstand: </font><span>executes and signals </span><span style="color: rgb(103, 136, 165);">MessageNotUnderstood</span></div><div id="x7c5e2a57bc83487">3. the <font color="#5DA44F">signal</font> method traverses the sender chain (= all contexts in the execution stack, starting from the top, most recent) until it finds a context containing a usable handler or, if there is no such handler present, until it reaches the bottom of the stack - which is nil</div><div id="x7c5e2a57bc83487">4. then the <font color="#5DA44F">signal</font> method sends <span style="color: rgb(93, 164, 79);">handleSignal:</span><span> which is also polymorphically defined under UndefinedObject and from there the </span><span style="color: rgb(93, 164, 79);">defaultAction</span><span> message is sent to the </span><span style="color: rgb(103, 136, 165);">MessageNotUnderstood </span><span>exception and </span><span style="color: rgb(172, 161, 41);">reachedDefaultHandler</span><span> is set to true, but:</span></div><div id="x7c5e2a57bc83487"><span>5. as the exception is also an Error instance it also executes Error's </span><span style="color: rgb(93, 164, 79);">defaultAction</span><span> and signals </span><span style="color: rgb(103, 136, 165);">UnhandledError</span><span> and the search for the handler starts over ;)</span></div><div id="x7c5e2a57bc83487"><span>6. if no handler is found on the current exection stack - this time for the </span><span style="color: rgb(103, 136, 165);">UnhandledError</span><span> , the search ends with nil again and </span><span>the </span><span style="color: rgb(93, 164, 79); margin: 0px;">defaultAction</span><span> message is sent to the exception - which for this exception opens the Debugger</span></div><div id="x7c5e2a57bc83487"> </div><div id="x7c5e2a57bc83487"><br /></div><div id="x7c5e2a57bc83487">This should roughly cover the process...</div><div id="x7c5e2a57bc83487"><br /></div><div id="x7c5e2a57bc83487">best,</div><div id="x7c5e2a57bc83487">Jaromir</div><blockquote cite="CAFfRWnXZ4pnAq5y++qW3Ujk03jpys=DUWNR_a1h6uP3RU6XUYA@mail.gmail.com" type="cite" class="cite2"><div dir="ltr"><br /><div><div><br /></div><span class="gmail_signature_prefix">-- </span><br /><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><font face="arial, helvetica, sans-serif">R. Mark Volkmann</font></div><div><span style="font-size:12.8000001907349px"><font face="arial, helvetica, sans-serif">Object Computing, Inc.</font></span></div></div></div></div></div></div></div></div></div></div>
</blockquote></div>
</body></html>