In this page:


Exception Management

csharp

// Comprehensive Error Handling
public class ErrorHandling
{
    public void SafeOperation()
    {
        try
        {
            // Risky operation
            double result = Calculate();
            @Tag.Result.Value = result;
        }
        catch (DivideByZeroException ex)
        {
            // Specific exception handling
            @Tag.Error.Type = "Division Error";
            @Tag.Error.Message = "Cannot divide by zero";
            LogError(ex);
        }
        catch (Exception ex)
        {
            // General exception handling
            @Tag.Error.Type = "General Error";
            @Tag.Error.Message = ex.Message;
            LogError(ex);
        }
        finally
        {
            // Always execute
            @Tag.Process.Calculating = false;
        }
    }
    
    private void LogError(Exception ex)
    {
        var errorLog = new
        {
            Timestamp = DateTime.Now,
            Type = ex.GetType().Name,
            Message = ex.Message,
            StackTrace = ex.StackTrace,
            User = @Tag.System.CurrentUser
        };
        
        @Dataset.Execute(
            "INSERT INTO ErrorLog (Time, Type, Message, Stack, User) VALUES (@Time, @Type, @Msg, @Stack, @User)",
            errorLog
        );
    }
}

In this section...