<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; }
<!--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><br /></div>
<div>
<div>On 01-Jul-24 1:25:59 AM, "Mark Volkmann" <<a href="mailto:r.mark.volkmann@gmail.com">r.mark.volkmann@gmail.com</a>> wrote:</div></div><div><br /></div>
<div id="x14d418f410c640d"><blockquote cite="CAFfRWnX6tLOUH6dOkxTF8c2BOU79qoDzM0-OW8+CQrjKh3RAzA@mail.gmail.com" type="cite" class="cite2">
<div dir="ltr">I see that the defaultAction method in UnhandledError sends #devDefaultAction to itself.<div>That sends #activeProcess to the Processor class to get the current process, but I don't see a Processor class.</div><div>Where is that defined?</div></div></blockquote><div id="x14d418f410c640d">Yes, it's confusing...</div><div id="x14d418f410c640d"><br /></div><font color="#6788A5">Processor</font> is the only instance of <font color="#C3C6C4">ProcessorScheduler class. Processor's name is capitalized because it's a global variable and all global are capitalized - all class names are also global variables, hence capitalized. </font></div><div id="x14d418f410c640d"><font color="#c3c6c4"><br /></font></div><div id="x14d418f410c640d"><font color="#c3c6c4">Similarly </font><font color="#6788A5">Smalltalk</font><font color="#c3c6c4"> is an instance of </font><font color="#C3C6C4">SmalltalkImage class. </font></div><div id="x14d418f410c640d"><font color="#c3c6c4"><br /></font></div><div id="x14d418f410c640d"><font color="#c3c6c4">You can easily find out by inspecting the object, e.g. </font><font color="#6788A5" style="margin: 0px;">Processor</font><span> inspect (or using CMD + i).</span></div><div id="x14d418f410c640d"><font color="#c3c6c4"><br /></font><blockquote cite="CAFfRWnX6tLOUH6dOkxTF8c2BOU79qoDzM0-OW8+CQrjKh3RAzA@mail.gmail.com" type="cite" class="cite2"><div dir="ltr"><div><br /><div><br /></div></div></div><br /><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jun 30, 2024 at 6:19 PM Mark Volkmann <<a href="mailto:r.mark.volkmann@gmail.com">r.mark.volkmann@gmail.com</a>> wrote:<br /></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr">Thanks so much for explaining that!</div><br /><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jun 30, 2024 at 5:48 PM Jaromir Matas <<a href="mailto:mail@jaromir.net">mail@jaromir.net</a>> wrote:<br /></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div><div><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="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487"><blockquote cite="http://CAFfRWnXZ4pnAq5y++qW3Ujk03jpys=DUWNR_a1h6uP3RU6XUYA@mail.gmail.com" type="cite" class="cite">
<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="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487">A quick summary of events:</div><div id="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487"><br /></div><div id="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487">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="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487"><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="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487">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="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487">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="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487"><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="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487"><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="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487"> </div><div id="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487"><br /></div><div id="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487">This should roughly cover the process...</div><div id="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487"><br /></div><div id="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487">best,</div><div id="m_8575474372437672642m_8534187140599164851x7c5e2a57bc83487">Jaromir</div><blockquote cite="http://CAFfRWnXZ4pnAq5y++qW3Ujk03jpys=DUWNR_a1h6uP3RU6XUYA@mail.gmail.com" type="cite" class="cite"><div dir="ltr"><br /><div><div><br /></div><span class="gmail_signature_prefix">-- </span><br /><div dir="ltr" class="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.8px"><font face="arial, helvetica, sans-serif">Object Computing, Inc.</font></span></div></div></div></div></div></div></div></div></div></div>
</blockquote></div>
</div></div></blockquote></div><br clear="all" /><div><br /></div><span class="gmail_signature_prefix">-- </span><br /><div dir="ltr" class="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.8px"><font face="arial, helvetica, sans-serif">Object Computing, Inc.</font></span></div></div></div></div></div></div></div></div>
</blockquote></div><br clear="all" /><div><br /></div><span class="gmail_signature_prefix">-- </span><br /><div dir="ltr" class="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.8px"><font face="arial, helvetica, sans-serif">Object Computing, Inc.</font></span></div></div></div></div></div></div></div></div>
</blockquote></div>
</body></html>