Skip to content

Error‐handling‐and‐validation‐reports

Melissa Nilsson edited this page Feb 1, 2026 · 5 revisions

Error Handling och Valideringsrapporter

Dokumentation om valideringslogik, felrapporter och strukturen av ValidationReport.

ValidationReport-struktur

Alla verktyg i Try-it-labben genererar en strukturerad valideringsrapport med tre kategorier av meddelanden:

{
  valid: boolean,
  errors: [
    { code: string, message: string, context: object }
  ],
  warnings: [
    { code: string, message: string, context: object }
  ],
  autoFixes: [
    { code: string, message: string, original: any, fixed: any }
  ]
}

Fält-beskrivningar

valid: Boolean som indikerar om inputen är giltig enligt strikta valideringsregler. false innebär att data inte kan användas säkert. errors: Array av kritiska fel som förhindrar användning av data. warnings: Array av icke-kritiska problem som kan orsaka oväntade resultat. autoFixes: Array av automatiska korrigeringar som har tillämpats på data.

Felkategorier

Errors

Errors indikerar att data är ogiltig och inte kan användas säkert. Exempel:

  • JSON_PARSE_ERROR: JSON kan inte parsas
  • BBOX_OUT_OF_BOUNDS: BBOX ligger utanför giltigt område
  • MISSING_REQUIRED_PARAM: Required parameter saknas
  • XML_PARSE_ERROR: XML är inte well-formed
  • CORS_ERROR: Server blockerar request p.g.a. CORS Hantering:
  • Data bör korrigeras innan användning
  • Export och vidare bearbetning blockeras (där tillämpligt)
  • Tydligt felmeddelande visas i UI

Warnings

Warnings indikerar potentiella problem som inte nödvändigtvis förhindrar användning. Exempel:

  • BBOX_NEAR_EDGE: BBOX ligger nära gräns för koordinatsystem
  • DEPRECATED_PARAMETER: Parameter är deprecated i standard
  • BBOX_VERY_SMALL: BBOX mindre än 100x100 meter
  • TOO_MANY_LEVELS: Fler än 20 zoomnivåer (prestanda-risk)
  • MISSING_TITLE: SLD saknar title-element (best practice) Hantering:
  • Data kan användas men bör granskas
  • Export tillåts med varning
  • Gul markering i UI

Auto-fixes

Auto-fixes indikerar att data har korrigerats automatiskt. Exempel:

  • BBOX_INVERTED_FIXED: minX och maxX har swappats
  • TRAILING_COMMA_REMOVED: Trailing comma i JSON har tagits bort
  • WHITESPACE_NORMALIZED: Extra whitespace har tagits bort Hantering:
  • Data är korrigerad och kan användas
  • Användare informeras om vad som ändrats
  • Blå markering i UI

Felkoder

Alla felkoder följer namnkonventionen CATEGORY_SPECIFIC_ISSUE.

JSON Validator

Kod Typ Beskrivning
JSON_PARSE_ERROR Error JSON syntax-fel
GEOJSON_INVALID_TYPE Error Ogiltigt GeoJSON type-värde
GEOJSON_MISSING_GEOMETRY Error Feature saknar geometry
DUPLICATE_KEYS Warning Duplicerade nycklar i objekt
EMPTY_VALUES Warning null eller tomma objekt

URL Builder

Kod Typ Beskrivning
URL_INVALID Error Ogiltig URL-format
MISSING_REQUIRED_PARAM Error Required parameter saknas
INVALID_SERVICE Error Service type matchar inte request
DEPRECATED_PARAMETER Warning Parameter är deprecated
UNKNOWN_PARAMETER Warning Parameter känns inte igen

BBOX Validator

Kod Typ Beskrivning
BBOX_INVALID_FORMAT Error Fel antal värden eller icke-numeriska värden
BBOX_INVERTED Error minX > maxX eller minY > maxY
BBOX_OUT_OF_BOUNDS Error Ligger utanför svenska koordinatsystem
BBOX_VERY_SMALL Warning BBOX mindre än 100x100 meter
BBOX_VERY_LARGE Warning BBOX större än hela Sverige
BBOX_NEAR_EDGE Warning BBOX ligger nära gräns
BBOX_INVERTED_FIXED Auto-fix minX/maxX eller minY/maxY har swappats

Resolutions Tool

Kod Typ Beskrivning
ZOOM_INVALID_RANGE Error Min > Max eller utanför 0-20
BASE_RESOLUTION_INVALID Error Negativt eller noll
TOO_MANY_LEVELS Warning Fler än 20 zoomnivåer

Gridcalc

Kod Typ Beskrivning
VERY_LARGE_CACHE Warning Cache >100 GB
TOO_MANY_TILES Warning >1 miljon tiles

SLD Validator

Kod Typ Beskrivning
XML_PARSE_ERROR Error Ogiltig XML-syntax
SLD_INVALID_VERSION Error Version stöds inte
SYMBOLIZER_INVALID Error Okänd eller felaktig symbolizer
COLOR_FORMAT_DEPRECATED Warning Deprecated color-format
MISSING_TITLE Warning Ingen title-element

Map Sandbox

Kod Typ Beskrivning
CORS_ERROR Error Server har inte CORS enabled
HTTP_404 Error Layer eller resource finns inte
HTTP_500 Error Server-fel
TIMEOUT Error Request tog >10 sekunder

Valideringslogik

Parsing Phase

Första steget är att parsa input till en strukturerad representation.

function parse(input) {
  try {
    return JSON.parse(input);
  } catch (error) {
    return {
      valid: false,
      errors: [{
        code: 'JSON_PARSE_ERROR',
        message: error.message,
        context: { position: error.position }
      }]
    };
  }
}

Princip: Om parsing misslyckas, avbryts validering. Inga efterföljande checks körs.

Validation Phase

Efter parsing körs en serie valideringsregler:

function validate(data) {
  const report = {
    valid: true,
    errors: [],
    warnings: [],
    autoFixes: []
  };
  
  // Rule 1: Check required fields
  if (!data.type) {
    report.errors.push({
      code: 'MISSING_REQUIRED_FIELD',
      message: 'Field "type" is required',
      context: { field: 'type' }
    });
    report.valid = false;
  }
  
  // Rule 2: Check optional best practices
  if (!data.title) {
    report.warnings.push({
      code: 'MISSING_TITLE',
      message: 'Field "title" is recommended',
      context: { field: 'title' }
    });
  }
  
  return report;
}

Princip: Alla regler körs även om errors hittas. Detta ger en komplett bild av problem.

Auto-fix Phase

Efter validering kan vissa fel korrigeras automatiskt:

function autoFix(data, report) {
  // Fix inverted BBOX
  if (data.bbox[0] > data.bbox[2]) {
    const original = [...data.bbox];
    [data.bbox[0], data.bbox[2]] = [data.bbox[2], data.bbox[0]];
    
    report.autoFixes.push({
      code: 'BBOX_INVERTED_FIXED',
      message: 'Swapped minX and maxX',
      original: original,
      fixed: data.bbox
    });
  }
  
  return data;
}

Princip: Auto-fixes tillämpas endast när det är säkert och loggas alltid.

Skillnad mellan Error, Warning och Auto-fix

När använda Error

Använd error när:

  • Data är strukturellt ogiltig (parse-fel, saknade required fields)
  • Data ligger utanför giltigt värdeområde (out of bounds)
  • Data kan inte användas säkert (CORS-fel, HTTP 404) Exempel:
if (bbox[0] >= bbox[2]) {
  report.errors.push({
    code: 'BBOX_INVERTED',
    message: 'minX must be less than maxX'
  });
}

När använda Warning

Använd warning när:

  • Data är tekniskt giltig men potentiellt problematisk
  • Best practices inte följs
  • Performance-risker finns Exempel:
if (bbox[2] - bbox[0] < 100) {
  report.warnings.push({
    code: 'BBOX_VERY_SMALL',
    message: 'BBOX is smaller than 100 meters'
  });
}

När använda Auto-fix

Använd auto-fix när:

  • Problemet är tydligt och entydigt
  • Korrigeringen är säker
  • Ingen användardialog behövs Exempel:
if (bbox[0] > bbox[2]) {
  [bbox[0], bbox[2]] = [bbox[2], bbox[0]];
  report.autoFixes.push({
    code: 'BBOX_INVERTED_FIXED',
    message: 'Swapped minX and maxX',
    original: originalBbox,
    fixed: bbox
  });
}

Varför explicita felkoder används

Felkoder ger:

  1. Maskinläsbarhet: Kod kan logiskt hantera specifika feltyper
  2. Internationalisering: Meddelanden kan översättas utan att ändra kod
  3. Dokumentation: Varje felkod kan dokumenteras separat
  4. Debugging: Enklare att söka efter specifika fel i kod och logs Exempel på användning:
if (report.errors.some(e => e.code === 'CORS_ERROR')) {
  showCorsHelp();  // Visa specifik hjälp för CORS-problem
}

Interpretera valideringsoutput

Exempel 1: Valid data

{
  "valid": true,
  "errors": [],
  "warnings": [],
  "autoFixes": []
}

Tolkning: Data är helt giltig och kan användas utan problem.

Exempel 2: Data med warnings

{
  "valid": true,
  "errors": [],
  "warnings": [
    {
      "code": "BBOX_VERY_SMALL",
      "message": "BBOX is smaller than 100x100 meters",
      "context": { "width": 50, "height": 50 }
    }
  ],
  "autoFixes": []
}

Tolkning: Data är giltig men mycket liten BBOX. Granska om detta är avsiktligt.

Exempel 3: Data med auto-fixes

{
  "valid": true,
  "errors": [],
  "warnings": [],
  "autoFixes": [
    {
      "code": "BBOX_INVERTED_FIXED",
      "message": "Swapped minX and maxX",
      "original": [200000, 6500000, 150000, 6600000],
      "fixed": [150000, 6500000, 200000, 6600000]
    }
  ]
}

Tolkning: Data hade inverterad BBOX som har korrigerats automatiskt. Verifiera att korrigeringen är korrekt.

Exempel 4: Invalid data

{
  "valid": false,
  "errors": [
    {
      "code": "BBOX_OUT_OF_BOUNDS",
      "message": "BBOX is outside valid bounds for EPSG:3006",
      "context": { "bbox": [1000, 2000, 3000, 4000] }
    }
  ],
  "warnings": [],
  "autoFixes": []
}

Tolkning: Data är ogiltig och kan inte användas. BBOX måste korrigeras manuellt.

Best Practices för validering

  1. Validera tidigt: Kör validering direkt när användare ändrar input
  2. Visa alla problem: Visa både errors och warnings samtidigt
  3. Förklara auto-fixes: Visa vad som ändrats och varför
  4. Ge konkreta lösningar: Visa inte bara problemet utan hur det fixas
  5. Prioritera errors: Visa errors först, sedan warnings

Sammanfattning

  • ValidationReport har tre kategorier: errors, warnings, auto-fixes
  • Errors förhindrar användning, warnings indikerar potentiella problem
  • Alla fel har explicita felkoder för maskinläsbarhet
  • Validering körs i tre faser: parsing, validation, auto-fix
  • Auto-fixes loggas alltid och visar original och korrigerad data För verktygs-specifika felkoder, se Tool Documentation.

Clone this wiki locally