Skip to content

Guide error handling

Skylite.Design edited this page Jan 25, 2026 · 1 revision

Error Handling & Intelligente LΓΆsungsvorschlΓ€ge

Version: 3.1.0 βœ… (Neu)
Status: VollstΓ€ndig implementiert


πŸ“‹ Übersicht

Der VelinScript Compiler bietet ein umfassendes Fehlerbehandlungssystem mit intelligenten LΓΆsungsvorschlΓ€gen fΓΌr alle Fehlertypen. Dies hilft Entwicklern, Fehler schnell zu identifizieren und zu beheben.


πŸ”΄ Fehlertypen

1. Parse Errors (Syntax-Fehler)

Tritt auf, wenn die Syntax ungΓΌltig ist.

❌ Parse error: Unexpected token at line 5, column 10
πŸ’‘ Did you mean: 'fn'?
πŸ”§ LΓΆsungsvorschlag: Function declarations use 'fn', not 'function'

HΓ€ufige Ursachen:

  • Falsche Keywords (function statt fn)
  • Fehlende Klammern
  • UnvollstΓ€ndige Generics

2. Type Errors (Typ-Fehler)

Tritt auf, wenn Typen nicht kompatibel sind.

❌ Type error: Type mismatch at line 12, column 15
πŸ’‘ Expected: string
πŸ’‘ Found: number
πŸ”§ Nutze explizite Typ-Annotationen

HΓ€ufige Ursachen:

  • Type Mismatch
  • Undefined Variable
  • Falsche Argument-Anzahl

3. CodeGen Errors (Code-Generierungsfehler)

Tritt auf bei der Code-Generierung fΓΌr Zielsprache.

❌ Code Generation Error: IR code generation failed
πŸ“‹ Target: Rust
πŸ”§ PrΓΌfe die IR-Validierung

4. IO Errors (Datei-/IO-Fehler)

Tritt auf bei Datei-Operationen.

❌ IO Error: File not found: test.velin
πŸ”§ PrΓΌfe den Dateipfad

5. Validation Errors (Validierungsfehler)

Tritt auf bei Validierung.

❌ Validation Error: Field is required
πŸ“‹ Feld: name
πŸ”§ Stelle sicher, dass alle Pflichtfelder vorhanden sind

6. Config Errors (Konfigurationsfehler)

Tritt auf bei ungΓΌltiger Konfiguration.

❌ Configuration Error: Invalid JSON
πŸ”§ PrΓΌfe velin.config.json auf Syntax-Fehler

πŸ’‘ Intelligente LΓΆsungsvorschlΓ€ge

"Did You Mean?" Feature

Der Compiler verwendet Levenshtein-Distanz um Γ€hnliche Befehle/Variablen vorzuschlagen:

❌ Undefined variable: userNmae
πŸ’‘ Did you mean: 'userName'?

Kontextbezogene Hinweise

Jeder Fehlertyp erhΓ€lt spezifische Tipps:

// Fehler: Typ mismatch
let x: string = 42;

// ❌ Type error: Type mismatch at line 1, column 15
// πŸ’‘ Beispiel fΓΌr explizite Typ-Annotation:
//    let x: string = "hello";
//    let y: number = 42;

Dokumentations-Links

Der Compiler verlinkt zu relevanten Dokumentationen:

πŸ”§ LΓΆsungsvorschlΓ€ge:
   - Siehe: docs/language/specification.md
   - Siehe: docs/guides/getting-started.md

πŸ› οΈ Best Practices fΓΌr Error Handling

1. Nutze Try-Catch fΓΌr kritische Operationen

try {
    let data = http.get("https://api.example.com/data");
    process(data);
} catch err {
    log.error("API request failed: " + err.message);
    alert.send("API Error!");
}

2. Validiere User Input frΓΌh

@POST("/api/users")
fn createUser(userData: UserInput): Result<User, Error> {
    // Validiere sofort
    if (userData.email == "") {
        return Result.Err("Email erforderlich");
    }
    if (userData.password.length < 12) {
        return Result.Err("Passwort muss mindestens 12 Zeichen lang sein");
    }
    
    // Erstelle User
    let user = User { /* ... */ };
    return Result.Ok(user);
}

3. Nutze sprechende Fehlermeldungen

// ❌ Schlecht
if (count > 100) {
    return Result.Err("Invalid");
}

// βœ… Gut
if (count > 100) {
    return Result.Err("User count exceeds maximum of 100");
}

4. Logge mit Kontext

try {
    process(data);
} catch err {
    log.error("Processing failed", {
        userId: user.id,
        dataSize: data.length,
        error: err.message,
        timestamp: now(),
    });
}

πŸ“Š Fehlerstatistiken

Der Compiler sammelt Fehlerstatistiken:

βœ— Kompilierung fehlgeschlagen mit 2 Fehlern:

❌ Parse error: Unexpected token at line 5, column 10
❌ Type error: Type mismatch at line 12, column 15

⚠️  2 Warnung(en):

⚠️  Warning: Deprecated function
⚠️  Warning: Unused variable

Fehlerstatistiken:
- Parse Errors: 1
- Type Errors: 1
- Warnings: 2

πŸ” CLI-Integration

velin check mit besseren Fehlern

$ velin check -i main.velin

βœ— Kompilierung fehlgeschlagen mit 1 Fehler:

❌ Type error: Type mismatch at line 12, column 15
πŸ“ Datei: main.velin
πŸ“ Position: Zeile 12, Spalte 15

πŸ’‘ Did you mean: 'length'?
πŸ’‘ Beispiel fΓΌr explizite Typ-Annotation:
   let x: number = 42;
   let name: string = "John";

πŸ”§ LΓΆsungsvorschlΓ€ge:
   - PrΓΌfe die Typen deiner Variablen
   - Nutze explizite Typ-Annotationen bei Unsicherheit
   - Siehe: docs/guides/tutorial-1-basics.md

πŸ’‘ Tipp: Nutze 'velin check --autofix' fΓΌr automatische Korrekturen

πŸ“ˆ Error-Export

JSON-Format

velin compile -i main.velin --export-errors errors.json
{
  "errors": [
    {
      "type": "Parse",
      "message": "Unexpected token",
      "line": 5,
      "column": 10,
      "suggestion": "Did you mean: 'fn'?"
    }
  ],
  "warnings": [],
  "statistics": {
    "parse_errors": 1,
    "type_errors": 0,
    "warnings": 0
  }
}

HTML-Report

velin compile -i main.velin --export-errors-html report.html

Generiert einen professionellen HTML-Report mit:

  • Fehler- und Warning-Kategorisierung
  • Statistik-Dashboard
  • Responsive Design

🎯 Fehler-Filterung

Filter nach Typ

# Nur Parse-Fehler
velin check -i main.velin --filter parse

# Nur kritische Fehler
velin check -i main.velin --filter critical

# Alle Fehler
velin check -i main.velin --filter all

πŸš€ Integration mit Tools

VS Code Extension

Der VelinScript VS Code Extension zeigt Fehler mit LΓΆsungsvorschlΓ€gen:

❌ Type error on line 12
πŸ’‘ Quick Fix: Add type annotation
πŸ’‘ Did you mean: 'userName'?

CI/CD Pipeline

- name: VelinScript Check
  run: |
    velin check -i src/main.velin \
      --export-errors-html report.html
    if [ -s errors.json ]; then exit 1; fi

πŸ“š Weitere Ressourcen


Erstellt: 2026-02-02
Version: 3.1.0

Clone this wiki locally