Autor
|
Thema: fehlermeldung im batchprozess loggen (548 mal gelesen)
|
fonzie Mitglied
Beiträge: 19 Registriert: 16.01.2007
|
erstellt am: 03. Sep. 2009 23:18 <-- editieren / zitieren --> Unities abgeben:
Hallo allerseits, hat jemand Erfahrung damit, wie man die Fehlermeldung/den Fehlercode im Batchprozess ausgeben/in eine logfile schreiben kann? Führt man ein Makro im interaktiven Modus aus (schaut dem Makro also gewissermaßen bei der Arbeit zu), dann erscheint eine Fehlermeldung, falls etwas schiefgeht. Genau diese Meldung möchte ich entweder in eine Datei ausgeben. Oder es wäre auch okay, wenn CATIA eine Fehlermeldung an den stdout zurückliefert, falls etwas schiefgeht. Ich bräuchte also irgendein Zeichen von CATIA, wenn im Batchprozess etwas schiefgeht. Vielen Dank schonmal für eure Mühe, Gruß fonzie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 04. Sep. 2009 08:03 <-- editieren / zitieren --> Unities abgeben: Nur für fonzie
|
fonzie Mitglied
Beiträge: 19 Registriert: 16.01.2007
|
erstellt am: 04. Sep. 2009 10:50 <-- editieren / zitieren --> Unities abgeben:
Ja, das Script habe ich selbst verfasst, und zwar in CATScript. Wenn ich hier die Befehle: On Error Goto Marke ... Marke: MsgBox("Fehler uebersprungen") bekomme ich einen Syntaxerror. "On Error Resume Next" funktioniert zwar, das ist aber nicht das, was ich brauche. Mache ich in der Syntax etwas falsch? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 05. Sep. 2009 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für fonzie
Hallo Fonzie, Sprungmarken werden im CATScript nicht berücksichtigt bzw. führen sogar zu einem Laufzeitfehler. Sprungmarken werden bei den meisten Programmieren (bei mir übrigens auch) nicht gerne gesehen. Das liegt an der Übersichtlichkeit des Code´s. Wenn man einen langen Quellcode hat und will diesen Debuggen muss man bis ganz nach unten Scrollen um die Fehlerbehandlung zu sehen. Darum hätte ich eine ganz andere IMHO gewantere Methode für dich dieses Problem zu lösen. Erst schaltest du du Fehlerbehandlung mit On Error Resume next aus. Wenn der Fehler ausgelöst wird springst du in eine Funktion (die schreibt auch mit dem StreamWriter die stdout Datei). Als Übergabe nimmst du die Err.Number, die Err.Description und optional auch die Err.Source. Jedes mal wenn ein Fehler ausgelöst wird springst du in die Funktion und lässt dir deine Ausgabe mit dem entsprechenden Fehler, Beschreibung, etc. schreiben. Hier mal ein kurzer Snippet: Code:
Sub CATMain() Dim oDoc as PartDocument On Error Resume Next Set oDoc = CATIA.AtiveDocument If Err.Number <> 0 Then myErrHandler Err.Number, Err.Description, Err.Source On Error GoTo 0 End If End Sub Function myErrHandler(myErrorCode, myErrorDescription, myErrorSource)
If myErrorCode = 13 Then 'Falsches Dokument Dim M1, M2, M3, M4, M5, Skin, Title M1 = "Es wurde ein Fehler ausgelöst! " M2 = "Dieser Fehler hat folgende Beschreibung:" M3 = "Fehlernummer: " + Chr(9) + Chr(9) & myErrorCode M4 = "Fehlerbeschreibung:" + Chr(9) + myErrorDescription M5 = "Fehlerquelle:" + Chr(9) + Chr(9) + myErrorSource Skin = vbCritical + vbOKOnly Title = Fehler Box = MsgBox(M1 + M2 + Chr(10) + Chr(10) + M3 + Chr(10) + M4 + Chr(10) + M5, Skin, Title) 'Hier schreibst du dann mit einem StreamWriter in deine *.txt Datei rein 'Die MsgBox ist jetzt nur ein Test zum visualisieren 'Wenn du auf unterschiedliche Fehler differenzierter Reagieren willst kannst wie im Beispiel nach Err.Number 'aufteilen. End If End Function
Ich hoffe der Code funktioniert. Habe es nicht ausprobiert sondern einfach so runterprogrammiert. Aber ich denke es sollte hinhauen
------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fonzie Mitglied
Beiträge: 19 Registriert: 16.01.2007
|
erstellt am: 07. Sep. 2009 10:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, vielen Dank für deine ausführliche Antwort! Ich habe deine Lösung zwar nicht zu 100% übernommen, aber so ähnlich. Im Prinzip muss ich nur wissen, ob der Batchprozess erfolgreich war oder nicht, d.h. ob Formdateien erzeugt und exportiert werden konnten oder nicht. Entsprechend lasse ich mit "on error resume next" das Skript durchlaufen. Am Ende entscheidet dann eine Fallabfrage mit Hilfe der Err.Number (Null oder nicht), ob ein Fehler aufgetreten ist. Falls ja, schreibt mir das Skript eine Fehlerdatei raus. Funktioniert bisher ganz gut. Seltsam ist nur, dass der Fall auftreten kann, dass CATIA zwar die Form erzeugt, die Err.Number jedoch trotzdem nicht Null ist (es wird ein "Item-Error" gemeldet.) Da mit das jedoch egal ist, solange nur die Form erzeugt wird, setze ich vor dem Exportieren die Err.Number wieder auf Null. Falls das Exportieren auch klappt und die Err.Number auf Null bleibt, habe ich alles so getestet, wie ich es brauche. Gruß und schöne Woche, fonzie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|