Exception handling good practice in Jscript
Hi all,
I recently posted a question regarding how to capture the call stack so I can output it to the log when something goes wrong. What I did discover though is that that's not actually what I should have been asking :smileytongue:
If you are interested:
Now on to the current question. What is the best way to do robust error handling of try..catch.. using Jscript. I have an OO background (c#) so naturally tend to go down that route when trying to solve an issue. That isn't always the right solution for scripting languages though. From the previous post:
function Scriptcall1()
{
try
{
LogErrorStack1();
}
catch(e)
{
switch(e)
{
case "1":
Log.Message("This isn't serious, just continue");
break;
case "2":
Log.Error("This is very serious");
break;
}
}
}
function Scriptcall2()
{
try
{
LogErrorStack1();
}
catch(e)
{
switch(e)
{
case "1":
Log.Error("This is very serious this time");
break;
case "2":
Log.Message("This isn't serious this time");
break;
}
}
}
function LogErrorStack1()
{
try
{
LogErrorStack2();
}
catch(e)
{
throw e;
}
}
function LogErrorStack2()
{
try
{
throw("1");
// or throw("2");
}
catch(e)
{
//***** Here is the actual question I should be asking: ********
LogException(e,"Perhaps you should try that again"); //But I don't want this to error. I want to re-throw the exception to the top level function and let that decide if it's a serious problem
throw e;
}
}
As you can see, my outlook is to equivalently re-throw an exception up the chain until it reaches a function that knows what to do with it and whether to catch and throw or catch and continue.
Case "1"; Case "2" isn't ideal either, since it leaves an opening for a new "Exception" type to be added down the road that is then not handled. How do you handle this ? One of the ideas I'm thinking of is to build a custom exception "class" which is just a KVP with Exception Types which I define in an enum as key and call stack as value. Can you throw this ? I'm all ears to hear what you think of my attempts.