<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>This sounds very much how Windows has been but finally changed. <BR>
 <BR>
 It used to be in C++ you could do: <BR>
 <BR>
  try { printf("%s\n", (char*) 1); }  /* access violation, reading from address 1 */ <BR>
  else catch (...) { printf("caught exception\n"); }  <BR>
 <BR>
  now you can't.  <BR>
  Now catch (...) catches all C++ exceptions but not these "Win32 structured exceptions".  <BR>
     "Win32 structured exceptions" are generally "hardware exceptions" made visible to software. <BR>
     The most common one is an "access violation". There's also "stack overflow". And others.<BR>
     They can be raised by code via RaiseException though.<BR>
 <BR>
  There is a similar syntax for catching them -- __try / __except.  <BR>
 <BR>
  Now, maybe Modula-3 runtime errors are "more orderly" and so more "catchable"?<BR>
 In particular, Win32 structured exceptions fall into two or three classes:<BR>
    Someone called RaiseException. These are orderly and reasonable to catch, but rare. <BR>
      (Even if C++ exceptions are implemented via RaiseException.) <BR>
    Someone has some corrupted data and "access violated" (aka: some sort of signal/tap on Unix)  <BR>
    This is the more common case, and if you catch such an exception, you have to wonder, uh, some data is corrupt..which data? What can I possily do at this point, given that some data somewhere is corrupt? It could be the heap. It could be the stack. It could be something small that I'm not going to touch. Heck, maybe it was merely a NULL deref and nothing "very" corrupt. I suggest a NULL deref might be the third class, but not clear.<BR>
 <BR>
If Modula-3 does an adequate job of noticing things as soon as they have gone bad, and not at an indeterminate point afterward, that sounds more viable. I suspect this might be the case, as long as you haven't called out to some buggy C code or some unsafe Modula-3, oops.<BR>
 <BR>
What about integer overflow? I wonder. :)<BR>
 <BR>
   - Jay <BR><BR><BR>

<HR id=stopSpelling>
<BR>
> To: dragisha@m3w.org<BR>> Date: Sun, 24 Feb 2008 14:24:30 -0800<BR>> From: mika@async.caltech.edu<BR>> CC: m3devel@elegosoft.com<BR>> Subject: Re: [M3devel] Do I remember well...<BR>> <BR>> Surely the SPIN people had to do that?<BR>> <BR>> I've wanted it a few times, too.<BR>> <BR>> Mika<BR>> <BR>> =?UTF-8?Q?Dragi=C5=A1a_Duri=C4=87?= writes:<BR>> >Once, there was a talk about (original?) CM3 making checked runtime<BR>> >errors behave like exceptions?<BR>> >-- <BR>> >DragiÅ¡a Durić <dragisha@m3w.org><BR><BR><br /><hr />Connect and share in new ways with Windows Live. <a href='http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_012008' target='_new'>Get it now!</a></body>
</html>