Error handling using try
and catch
Handling errors is an important issue when creating processes and BI#
provides an elegant way for dealing with typical situations. Use the try
statement to enclose a list of statements that might
raise an error. Then use the catch
statement to deal
with those errors. Here is an example:
#define EngineVersion 3.0
#define RuntimeVersion 3.0
void ExceptionHandlingDemo(int x)
@Description: "Demonstrates how to use the try/catch statements.";
@Category: "Demo";
{
string errorMessage = "";
int errorCode = 0;
// You can raise and catch your own errors.
try
{
if (x > 10)
{
RaiseError("x has to be less or equal 10!", 1);
}
WriteLine(x);
}
catch (errorMessage, errorCode)
{
WriteLine(errorMessage);
WriteLine(errorCode);
}
}
This process expects an int
parameter
named x
and checks if it is less or equal 10. If
not, the process raises an error through the RaiseError
function. This function accepts an error message and an
error code that you can define yourself.
Process execution continues with the catch
statement. The process does not execute the WriteLine(x)
statement. Instead, it outputs the error
message and the error code. Both the message and the code are assigned automatically
to the variables errorMessage
and errorCode
. You can freely choose their names, but you
must declare them explicitly and they must be of types string
and int
.
Errors not only occur in your own code. They might also occur in the BI# runtime functions. For example, an error is raised, when you try to connect to a database with an invalid connection string. You can handle this kind of error in the same way you handle errors raised in your code:
#define EngineVersion 3.0
#define RuntimeVersion 3.0
void ExceptionHandlingDemo()
@Description: "Demonstrates how to use the try/catch statements.";
@Category: "Demo";
{
string errorMessage = "";
int errorCode = 0;
// You can catch errors raised by runtime functions.
try
{
SQLConnection connection = SQLCreateConnection("");
}
catch (errorMessage, errorCode)
{
WriteLine(errorMessage);
WriteLine(errorCode); // Will be -1 in case of runtime errors.
}
}
As in the sample before, you receive an error message and an error code. The only difference is that the error code is -1 in case of errors raised by a runtime function.