Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Gelöst]Fehler abfangen, aber wie richtig?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    784

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

[Gelöst]Fehler abfangen, aber wie richtig?

Scheduled Pinned Locked Moved JavaScript
22 Posts 5 Posters 1.9k Views 6 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    fastfoot
    wrote on last edited by fastfoot
    #1

    Hallo
    bei einer meiner Funktionen zum Download einer Datei verwende ich var writer = fs.createWriteStream(path); Wenn der Pfad aber nicht existiert, dann stürzt der JS-Adapter ab und wird neu gestartet. Nun dachte ich den Fehler mit try/catch abzufangen, was aber leider nicht zum Erfolg führt.

    Meine Frage: warum funktioniert try/catch hier nicht. Muss ich wirklich vorher auf die Existenz des Pfades prüfen?

    iobroker läuft unter Docker auf QNAP TS-451+
    SkriptRecovery: https://forum.iobroker.net/post/930558

    M 1 Reply Last reply
    0
    • F fastfoot

      Hallo
      bei einer meiner Funktionen zum Download einer Datei verwende ich var writer = fs.createWriteStream(path); Wenn der Pfad aber nicht existiert, dann stürzt der JS-Adapter ab und wird neu gestartet. Nun dachte ich den Fehler mit try/catch abzufangen, was aber leider nicht zum Erfolg führt.

      Meine Frage: warum funktioniert try/catch hier nicht. Muss ich wirklich vorher auf die Existenz des Pfades prüfen?

      M Offline
      M Offline
      MCU
      wrote on last edited by MCU
      #2

      @fastfoot
      https://flaviocopes.com/how-to-check-if-file-exists-node/
      https://futurestud.io/tutorials/node-js-check-if-a-file-exists

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      F 1 Reply Last reply
      0
      • M MCU

        @fastfoot
        https://flaviocopes.com/how-to-check-if-file-exists-node/
        https://futurestud.io/tutorials/node-js-check-if-a-file-exists

        F Offline
        F Offline
        fastfoot
        wrote on last edited by
        #3

        @mcu Danke, aber das war nicht meine Frage. Ich wollte wissen wieso try/catch nicht hilft den Adapterabsturz zu verhindern.

        iobroker läuft unter Docker auf QNAP TS-451+
        SkriptRecovery: https://forum.iobroker.net/post/930558

        XenonX 1 Reply Last reply
        0
        • F fastfoot

          @mcu Danke, aber das war nicht meine Frage. Ich wollte wissen wieso try/catch nicht hilft den Adapterabsturz zu verhindern.

          XenonX Offline
          XenonX Offline
          Xenon
          Forum Testing Developer
          wrote on last edited by
          #4

          @fastfoot poste mal die die Funktion

          wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

          F 1 Reply Last reply
          0
          • XenonX Xenon

            @fastfoot poste mal die die Funktion

            F Offline
            F Offline
            fastfoot
            wrote on last edited by
            #5

            @xenon sagte in Fehler abfangen, aber wie richtig?:

            @fastfoot poste mal die die Funktion

            Der Fehler wird hier schon abgefangen, try/catch ist nur da um zu demonstrieren dass es hier nicht funktioniert. Der Rest der Funktion kann auskommentiert werden, um zu sehen dass der Fehler durch fs.createWriteStream erzeugt wird.
            Die url speziell erfordert: Die Datei /etc/ssl/openssl.cnf muss in der letzten Zeile auf CipherString = DEFAULT@SECLEVEL=1 eingestellt sein.
            siehe hier für das kmpl. Skript:https://forum.iobroker.net/topic/36632/corona-ampel-österreich-in-vis-anzeigen/173

            const axios = require('axios').default;                 // In der JS-Instanz unter Module eintragen
            const csvjson = require('csvjson');                     // In der JS-Instanz unter Module eintragen
            const fs = require('fs');
            const Path = require('path');
            const fileName = 'CovidFaelle_Timeline_GKZ.csv';        // Dateiname
            const filePath = '/opt/iobroker/iobroker-data/files/Downloads';   // Dateipfad
            
            // download and save csv file
            async function getCSVFile (url) {  
                let writer;
            
                if(!fs.existsSync(filePath)) return log('Dateipfad existiert nicht!','error');
            
                //try/catch nützt hier nichts wenn filePath nicht existiert!
                try{
                    writer = fs.createWriteStream(Path.resolve(filePath, '', fileName));
                }catch {
                    log('Fehler');
                }
            
                const response = await axios({
                    url: url,
                    method: 'GET',
                    responseType: 'stream'
                })
                response.data.pipe(writer);
            
                return new Promise((resolve, reject) => {
                    writer.on('finish', resolve)
                    writer.on('error', reject)
                })
            }
            
            async function main(){
                const url = 'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv';
                await getCSVFile(url);
            
            }
            
            main();
            

            iobroker läuft unter Docker auf QNAP TS-451+
            SkriptRecovery: https://forum.iobroker.net/post/930558

            XenonX 1 Reply Last reply
            0
            • F fastfoot

              @xenon sagte in Fehler abfangen, aber wie richtig?:

              @fastfoot poste mal die die Funktion

              Der Fehler wird hier schon abgefangen, try/catch ist nur da um zu demonstrieren dass es hier nicht funktioniert. Der Rest der Funktion kann auskommentiert werden, um zu sehen dass der Fehler durch fs.createWriteStream erzeugt wird.
              Die url speziell erfordert: Die Datei /etc/ssl/openssl.cnf muss in der letzten Zeile auf CipherString = DEFAULT@SECLEVEL=1 eingestellt sein.
              siehe hier für das kmpl. Skript:https://forum.iobroker.net/topic/36632/corona-ampel-österreich-in-vis-anzeigen/173

              const axios = require('axios').default;                 // In der JS-Instanz unter Module eintragen
              const csvjson = require('csvjson');                     // In der JS-Instanz unter Module eintragen
              const fs = require('fs');
              const Path = require('path');
              const fileName = 'CovidFaelle_Timeline_GKZ.csv';        // Dateiname
              const filePath = '/opt/iobroker/iobroker-data/files/Downloads';   // Dateipfad
              
              // download and save csv file
              async function getCSVFile (url) {  
                  let writer;
              
                  if(!fs.existsSync(filePath)) return log('Dateipfad existiert nicht!','error');
              
                  //try/catch nützt hier nichts wenn filePath nicht existiert!
                  try{
                      writer = fs.createWriteStream(Path.resolve(filePath, '', fileName));
                  }catch {
                      log('Fehler');
                  }
              
                  const response = await axios({
                      url: url,
                      method: 'GET',
                      responseType: 'stream'
                  })
                  response.data.pipe(writer);
              
                  return new Promise((resolve, reject) => {
                      writer.on('finish', resolve)
                      writer.on('error', reject)
                  })
              }
              
              async function main(){
                  const url = 'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv';
                  await getCSVFile(url);
              
              }
              
              main();
              
              XenonX Offline
              XenonX Offline
              Xenon
              Forum Testing Developer
              wrote on last edited by Xenon
              #6

              @fastfoot ähm "catch log(" fehler")?"

              müsste da nicht console.log oder console.info stehen?

              Bzw catch(e) {
              console.warn(e)
              };

              wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

              F 1 Reply Last reply
              0
              • XenonX Xenon

                @fastfoot ähm "catch log(" fehler")?"

                müsste da nicht console.log oder console.info stehen?

                Bzw catch(e) {
                console.warn(e)
                };

                F Offline
                F Offline
                fastfoot
                wrote on last edited by
                #7

                @xenon sagte in Fehler abfangen, aber wie richtig?:

                @fastfoot ähm "catch log(" fehler")?"

                müsste da nicht console.log oder console.info stehen?

                Bzw catch(e) {
                console.warn(e)
                };

                nein, ist aber unerheblich weil der Adapter bei falschem Pfad abstürzt und gar nicht dahin kommt :-) Das ist kein Adaptercode, da muss glaube ich console.log() stehen

                iobroker läuft unter Docker auf QNAP TS-451+
                SkriptRecovery: https://forum.iobroker.net/post/930558

                XenonX 1 Reply Last reply
                0
                • F fastfoot

                  @xenon sagte in Fehler abfangen, aber wie richtig?:

                  @fastfoot ähm "catch log(" fehler")?"

                  müsste da nicht console.log oder console.info stehen?

                  Bzw catch(e) {
                  console.warn(e)
                  };

                  nein, ist aber unerheblich weil der Adapter bei falschem Pfad abstürzt und gar nicht dahin kommt :-) Das ist kein Adaptercode, da muss glaube ich console.log() stehen

                  XenonX Offline
                  XenonX Offline
                  Xenon
                  Forum Testing Developer
                  wrote on last edited by
                  #8

                  @fastfoot reden wir jetzt von einem eigenen Adapter oder vom js Adapter?

                  wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

                  F 1 Reply Last reply
                  0
                  • XenonX Xenon

                    @fastfoot reden wir jetzt von einem eigenen Adapter oder vom js Adapter?

                    F Offline
                    F Offline
                    fastfoot
                    wrote on last edited by
                    #9

                    @xenon sagte in Fehler abfangen, aber wie richtig?:

                    @fastfoot reden wir jetzt von einem eigenen Adapter oder vom js Adapter?

                    wir reden von einem normalen Skript, welches bei falschem Pfad den Adapter abstürzen lässt. Ein try/catch hilft nicht dagegen und ich wollte wissen warum

                    iobroker läuft unter Docker auf QNAP TS-451+
                    SkriptRecovery: https://forum.iobroker.net/post/930558

                    XenonX 1 Reply Last reply
                    0
                    • F fastfoot

                      @xenon sagte in Fehler abfangen, aber wie richtig?:

                      @fastfoot reden wir jetzt von einem eigenen Adapter oder vom js Adapter?

                      wir reden von einem normalen Skript, welches bei falschem Pfad den Adapter abstürzen lässt. Ein try/catch hilft nicht dagegen und ich wollte wissen warum

                      XenonX Offline
                      XenonX Offline
                      Xenon
                      Forum Testing Developer
                      wrote on last edited by
                      #10

                      @fastfoot müsste ich morgen mal ausprobieren

                      wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

                      F 1 Reply Last reply
                      0
                      • XenonX Xenon

                        @fastfoot müsste ich morgen mal ausprobieren

                        F Offline
                        F Offline
                        fastfoot
                        wrote on last edited by
                        #11

                        @xenon sagte in Fehler abfangen, aber wie richtig?:

                        @fastfoot müsste ich morgen mal ausprobieren

                        probiert habe ich ja schon, ich hatte gehofft ein JS guru hier wüsste warum das nicht abgefangen wird. Und eine Lösung habe ich ja auch, würde aber gerne aus einer Antwort lernen können :-) DAnke fürs Anschauen

                        iobroker läuft unter Docker auf QNAP TS-451+
                        SkriptRecovery: https://forum.iobroker.net/post/930558

                        M 1 Reply Last reply
                        0
                        • F fastfoot

                          @xenon sagte in Fehler abfangen, aber wie richtig?:

                          @fastfoot müsste ich morgen mal ausprobieren

                          probiert habe ich ja schon, ich hatte gehofft ein JS guru hier wüsste warum das nicht abgefangen wird. Und eine Lösung habe ich ja auch, würde aber gerne aus einer Antwort lernen können :-) DAnke fürs Anschauen

                          M Offline
                          M Offline
                          MCU
                          wrote on last edited by
                          #12

                          @fastfoot Dann mach ein Issue im javascript-Adapter auf:
                          https://github.com/ioBroker/ioBroker.javascript/issues

                          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                          F 1 Reply Last reply
                          0
                          • M MCU

                            @fastfoot Dann mach ein Issue im javascript-Adapter auf:
                            https://github.com/ioBroker/ioBroker.javascript/issues

                            F Offline
                            F Offline
                            fastfoot
                            wrote on last edited by
                            #13

                            @mcu sagte in Fehler abfangen, aber wie richtig?:

                            @fastfoot Dann mach ein Issue im javascript-Adapter auf:
                            https://github.com/ioBroker/ioBroker.javascript/issues

                            ähem, nein! Ich denke es ist/war mein Fehler, zu denken dass try/catch einen solchen Fehler abfängt. Ich hätte nur gerne eine Erklärung dazu gehabt warum das nicht funktioniert(funktionieren kann). der Fehler wird ja eigentlich im fs Modul nicht abgefangen und ich glaube nicht dass der JS-Adapter da noch viel tun kann.

                            iobroker läuft unter Docker auf QNAP TS-451+
                            SkriptRecovery: https://forum.iobroker.net/post/930558

                            OliverIOO 1 Reply Last reply
                            0
                            • F fastfoot

                              @mcu sagte in Fehler abfangen, aber wie richtig?:

                              @fastfoot Dann mach ein Issue im javascript-Adapter auf:
                              https://github.com/ioBroker/ioBroker.javascript/issues

                              ähem, nein! Ich denke es ist/war mein Fehler, zu denken dass try/catch einen solchen Fehler abfängt. Ich hätte nur gerne eine Erklärung dazu gehabt warum das nicht funktioniert(funktionieren kann). der Fehler wird ja eigentlich im fs Modul nicht abgefangen und ich glaube nicht dass der JS-Adapter da noch viel tun kann.

                              OliverIOO Offline
                              OliverIOO Offline
                              OliverIO
                              wrote on last edited by OliverIO
                              #14

                              @fastfoot

                              das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.
                              Verschiebe ich den Befehl auch in den try-block dann erscheint im log auch der Fehler

                              wenn man dann noch an catch den error parameter übergibt und den über das log ausgibt, dann erscheint folgendes:

                              javascript.0 (22209) script.js.Test.Skript_1: {'message':'write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n','name':'Error','stack':'Error: write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n\n at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:94:16)','config':{'url':'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv','method':'get','headers':{'Accept':'application/json, text/plain, */*','User-Agent':'axios/0.21.1'},'transformRequest':[null],'transformResponse':[null],'timeout':0,'responseType':'stream','xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1},'code':'EPROTO'}
                              

                              der server hat wohl ein problem mit der ssl konfiguration. da muss man bei axios wohl noch den ein oder anderen parameter mit angeben, damit die prüfung ausgeschaltet wird.

                              weiß nicht genau was du vorhast.
                              aber wahrscheinlich könntest du dir es einfacher machen direkt über die json daten zu gehen und nicht erst das csv runter zu laden, das einzulesen und daraus die richtigen daten identifizieren.

                              https://covid19-dashboard.ages.at/data/JsonData.json

                              die daten sehen ganz gut strukturiert aus

                              59735ce7-4a7f-4898-a8ca-6c63c6fdaf2d-image.png

                              Meine Adapter und Widgets
                              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                              Links im Profil

                              XenonX F 2 Replies Last reply
                              0
                              • OliverIOO OliverIO

                                @fastfoot

                                das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.
                                Verschiebe ich den Befehl auch in den try-block dann erscheint im log auch der Fehler

                                wenn man dann noch an catch den error parameter übergibt und den über das log ausgibt, dann erscheint folgendes:

                                javascript.0 (22209) script.js.Test.Skript_1: {'message':'write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n','name':'Error','stack':'Error: write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n\n at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:94:16)','config':{'url':'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv','method':'get','headers':{'Accept':'application/json, text/plain, */*','User-Agent':'axios/0.21.1'},'transformRequest':[null],'transformResponse':[null],'timeout':0,'responseType':'stream','xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1},'code':'EPROTO'}
                                

                                der server hat wohl ein problem mit der ssl konfiguration. da muss man bei axios wohl noch den ein oder anderen parameter mit angeben, damit die prüfung ausgeschaltet wird.

                                weiß nicht genau was du vorhast.
                                aber wahrscheinlich könntest du dir es einfacher machen direkt über die json daten zu gehen und nicht erst das csv runter zu laden, das einzulesen und daraus die richtigen daten identifizieren.

                                https://covid19-dashboard.ages.at/data/JsonData.json

                                die daten sehen ganz gut strukturiert aus

                                59735ce7-4a7f-4898-a8ca-6c63c6fdaf2d-image.png

                                XenonX Offline
                                XenonX Offline
                                Xenon
                                Forum Testing Developer
                                wrote on last edited by Xenon
                                #15

                                @oliverio hatte es auch grade getestet, komme zum gleichen Ergebnis
                                @fastfoot Das was da das Ziel ist, kann das nicht der corona Adapter vom dutch bereits?

                                wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

                                LatziL F 2 Replies Last reply
                                0
                                • XenonX Xenon

                                  @oliverio hatte es auch grade getestet, komme zum gleichen Ergebnis
                                  @fastfoot Das was da das Ziel ist, kann das nicht der corona Adapter vom dutch bereits?

                                  LatziL Online
                                  LatziL Online
                                  Latzi
                                  wrote on last edited by
                                  #16

                                  @xenon sagte in Fehler abfangen, aber wie richtig?:

                                  kann das nicht der corona Adapter vom dutch bereits?

                                  nein, leider nicht auf Bezirks-/Bundeslandebene für Österreich :-(

                                  F 1 Reply Last reply
                                  0
                                  • OliverIOO OliverIO

                                    @fastfoot

                                    das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.
                                    Verschiebe ich den Befehl auch in den try-block dann erscheint im log auch der Fehler

                                    wenn man dann noch an catch den error parameter übergibt und den über das log ausgibt, dann erscheint folgendes:

                                    javascript.0 (22209) script.js.Test.Skript_1: {'message':'write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n','name':'Error','stack':'Error: write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n\n at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:94:16)','config':{'url':'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv','method':'get','headers':{'Accept':'application/json, text/plain, */*','User-Agent':'axios/0.21.1'},'transformRequest':[null],'transformResponse':[null],'timeout':0,'responseType':'stream','xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1},'code':'EPROTO'}
                                    

                                    der server hat wohl ein problem mit der ssl konfiguration. da muss man bei axios wohl noch den ein oder anderen parameter mit angeben, damit die prüfung ausgeschaltet wird.

                                    weiß nicht genau was du vorhast.
                                    aber wahrscheinlich könntest du dir es einfacher machen direkt über die json daten zu gehen und nicht erst das csv runter zu laden, das einzulesen und daraus die richtigen daten identifizieren.

                                    https://covid19-dashboard.ages.at/data/JsonData.json

                                    die daten sehen ganz gut strukturiert aus

                                    59735ce7-4a7f-4898-a8ca-6c63c6fdaf2d-image.png

                                    F Offline
                                    F Offline
                                    fastfoot
                                    wrote on last edited by
                                    #17

                                    @oliverio sagte in Fehler abfangen, aber wie richtig?:

                                    das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.

                                    Danke für den ausführlichen Kommentar. Aber hast du mal einen falschen Dateipfad angegeben? Da zeigt sich doch erst der Absturz von dem ich rede(Adapter-Neustart). Das in deinem Log gezeigte SSL-Problem hatte ich auch beschrieben und wie es derzeit behoben werden kann, aber es lässt den Adapter ja nicht neu starten

                                    iobroker läuft unter Docker auf QNAP TS-451+
                                    SkriptRecovery: https://forum.iobroker.net/post/930558

                                    OliverIOO 1 Reply Last reply
                                    0
                                    • XenonX Xenon

                                      @oliverio hatte es auch grade getestet, komme zum gleichen Ergebnis
                                      @fastfoot Das was da das Ziel ist, kann das nicht der corona Adapter vom dutch bereits?

                                      F Offline
                                      F Offline
                                      fastfoot
                                      wrote on last edited by
                                      #18

                                      @xenon sagte in Fehler abfangen, aber wie richtig?:

                                      @oliverio hatte es auch grade getestet, komme zum gleichen Ergebnis

                                      siehe meinen anderen Post. Ihr habt beide nicht versucht meinen 'Fehler' nachzustellen, obwohl ich es ausführlichst beschrieben habe. Kommentiere einfach alles nach createWritestream aus und auch die Prüfung mit existsSynch, übergib einen fehlenden Pfad und schau wie der Adapter abstürzt. Und dann sage mir bitte warum das try/catch diesen Absturz nicht verhindert oder verhindern kann.

                                      @fastfoot Das was da das Ziel ist, kann das nicht der corona Adapter vom dutch bereits?

                                      selbst wenn er es könnte, ich habe diese Dinge gerne selbst in der Hand und mir gefällt auch die Art der Datenaufbereitung in einzelne DP nicht, ich mag lieber Tabellen.

                                      iobroker läuft unter Docker auf QNAP TS-451+
                                      SkriptRecovery: https://forum.iobroker.net/post/930558

                                      1 Reply Last reply
                                      0
                                      • LatziL Latzi

                                        @xenon sagte in Fehler abfangen, aber wie richtig?:

                                        kann das nicht der corona Adapter vom dutch bereits?

                                        nein, leider nicht auf Bezirks-/Bundeslandebene für Österreich :-(

                                        F Offline
                                        F Offline
                                        fastfoot
                                        wrote on last edited by
                                        #19

                                        @latzi sagte in Fehler abfangen, aber wie richtig?:

                                        @xenon sagte in Fehler abfangen, aber wie richtig?:

                                        kann das nicht der corona Adapter vom dutch bereits?

                                        nein, leider nicht auf Bezirks-/Bundeslandebene für Österreich :-(

                                        Das Skript kann das ja und es gibt auch eine Grafik dazu, muss es denn immer ein Adapter sein?

                                        iobroker läuft unter Docker auf QNAP TS-451+
                                        SkriptRecovery: https://forum.iobroker.net/post/930558

                                        1 Reply Last reply
                                        0
                                        • F fastfoot

                                          @oliverio sagte in Fehler abfangen, aber wie richtig?:

                                          das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.

                                          Danke für den ausführlichen Kommentar. Aber hast du mal einen falschen Dateipfad angegeben? Da zeigt sich doch erst der Absturz von dem ich rede(Adapter-Neustart). Das in deinem Log gezeigte SSL-Problem hatte ich auch beschrieben und wie es derzeit behoben werden kann, aber es lässt den Adapter ja nicht neu starten

                                          OliverIOO Offline
                                          OliverIOO Offline
                                          OliverIO
                                          wrote on last edited by OliverIO
                                          #20

                                          @fastfoot sagte in Fehler abfangen, aber wie richtig?:

                                          @oliverio sagte in Fehler abfangen, aber wie richtig?:

                                          das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.

                                          Danke für den ausführlichen Kommentar. Aber hast du mal einen falschen Dateipfad angegeben? Da zeigt sich doch erst der Absturz von dem ich rede(Adapter-Neustart). Das in deinem Log gezeigte SSL-Problem hatte ich auch beschrieben und wie es derzeit behoben werden kann, aber es lässt den Adapter ja nicht neu starten

                                          also ich habe keinen absturz des adapters, wenn ich den request mit axios und der verarbeitung danach auskommentiere.

                                          allerdings wird auch kein fehler geworfen wenn der pfad nicht existiert.

                                          const axios = require('axios').default;                 // In der JS-Instanz unter Module eintragen
                                          //const csvjson = require('csvjson');                     // In der JS-Instanz unter Module eintragen
                                          const fs = require('fs');
                                          const Path = require('path');
                                          const fileName = 'CovidFaelle_Timeline_GKZ.csv';        // Dateiname
                                          const filePath = '/opt/iobroker/iobroker-data/files/Downloadsx';   // Dateipfad
                                           
                                          // download and save csv file
                                          async function getCSVFile (url) {  
                                              let writer;
                                           
                                              //if(!fs.existsSync(filePath)) return log('Dateipfad existiert nicht!','error');
                                              log("1");
                                           
                                              //try/catch nützt hier nichts wenn filePath nicht existiert!
                                              log("2");
                                              try{
                                                  log("3");
                                                  writer = fs.createWriteStream(Path.resolve(filePath, '', fileName));
                                                  log("4");
                                              }catch {
                                                  log("5");
                                                  log('Fehler');
                                                  log("6");
                                              }
                                          log("7");
                                           }
                                          async function main(){
                                              const url = 'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv';
                                              await getCSVFile(url);
                                           }
                                           main();
                                          
                                          

                                          log sollte 1 2 3 4 7 ausgeben
                                          Gleiches Ergebnis ob Pfad existiert oder nicht

                                          über zeile 12 fragst du ja ab, ob der pfad existiert und beendest dann. das habe ich für den test mal auskommentiert

                                          das fs.createWriteStream keinen fehler wirft, hängt evtl. mit der fehlerbehandlungs strategie des moduls ab.

                                          fehler werden da normalerweise über ein error-event abgefangen
                                          https://nodejs.org/api/fs.html#fs_event_error

                                          allerdings wird der fehler auch mit folgender code ergänzung geworfen, weil wahrscheinlich es da bereits vorbei ist.

                                          writer.on('error', function(err) {
                                              log(err);
                                              writer.end();
                                          });
                                          
                                          

                                          Einen Fehler darauf findest du hier. Auch wie alternativ der Fehler dann abgefangen werden kann. Im Text wird von Berechtigungsproblemen geschrieben, aber da kannst du es mal probieren.
                                          Aber wie gesagt, mit Zeile 12 ist zumindest das Problem ob Pfad existiert oder nicht ja abgefragt.

                                          https://stackoverflow.com/questions/43293921/cant-catch-exception-from-fs-createwritestream/43303770

                                          Meine Adapter und Widgets
                                          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                          Links im Profil

                                          F 1 Reply Last reply
                                          1

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          324

                                          Online

                                          32.8k

                                          Users

                                          82.7k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe