<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin-top:0cm;
        margin-right:0cm;
        margin-bottom:8.0pt;
        margin-left:0cm;
        line-height:106%;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">Hi,<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">I’ve been looking at script error handling in LSL_Api.cs and propose to tidy it up.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">Currently, LSL script errors are handled in a variety of ways:<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- llSay(0, "…"): Says error in public chat, whereas the error should be shouted on the debug channel (at least for all the occurrences I’ve checked so far) and displayed in the Script Warning/Error
 dialogue box.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- ShoutError("…"): Shouts errors on the debug channel (in accordance with the LSL documentation). But these errors are not displayed in the viewer’s Script Warning/Error dialogue box.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- LSLError("…"): throw new ScriptException("LSL Runtime Error: " + msg); Displays a .NET exception in both the viewer’s Script Warning/Error dialogue box and the OpenSim console.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- Deprecated("…"): throw new ScriptException("Command deprecated: " + command); Displays a .NET exception in both the viewer’s Script Warning/Error dialogue box and the OpenSim console.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- NotImplemented("…"): throw new NotImplementedException("Command not implemented: " + command); Displays a .NET exception in both the viewer’s Script Warning/Error dialogue box and the OpenSim
 console.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- throw new Exception(…): Displays a .NET exception in both the viewer’s Script Warning/Error dialogue box and the OpenSim console.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- throw new ScriptException(…): Displays a .NET exception script in both the viewer’s Script Warning/Error dialogue box and the OpenSim console.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">What I propose to do is consolidate things down to use just three methods (that don’t produce .NET exceptions):<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- ShoutError()                    Shout the error details on the debug channel.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- Deprecated()                  Shout "Command is deprecated" on the debug channel.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- NotImplemented()      Shout "Command is not implemented" on the debug channel.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">And make all three also display the error in the viewer's Script Warning/Error dialogue box.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">Plus miscellaneous tidy ups such as …<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- Don’t included the LSL method’s name in errors shouted on the debug channel; the LSL method’s name is already included in the “name” parameter of the message shouted.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">- Add Deprecated() calls to deprecated LSL methods that currently do nothing or just sleep with no user feedback.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">And replicate this approach in OSSL_Api.cs which has similar issues.<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">If people think that this is a good idea, I’ll create a Mantis entry and proceed. Anyone interested in reviewing things as I go?<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">David<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt">SL/OSgrid: Strachan Ofarrel<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>