Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 16.01.2005 - 15:37 Titel: error in Skriptablauf einlegen ohne Dialog |
|
|
Gibt es eine alternative für error-Dialog?
ich möchte einen error in ein von aussen aufzurufendes Skript einbauen
einfach so in einen Skriptvarianten-Zweig, dann bleibt wunschgemäss das ganze Skript beim error stecken nach:
error -- – 8753 zugefügt 22h13: wunschgemäss!
Nun aber die Frage: kann ich mit error auch ein Skript unterbrechen mit der Funktion error, jedoch den dazu erzeugten Dialog "an error has occured" vermeiden? oder überhaupt eine Dialogmeldung an der Stelle des :
error -- -2753
vermeiden und trotzdem die Funktion eines errors generieren.
Geht das überhaupt?
Ps für Spötter: einer der häufigsten Ursachen von Mammutsätzen ist die mangelnde Sprachkenntnis! Ich möchte euch mal schwimmen sehen wenn ihr wie ich als schweizer in einer Fremdsprache so schwierige Fragen stellen müsstet...  _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 16.01.2005 - 23:13, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 16.01.2005 - 16:31 Titel: |
|
|
Hallo Willy,
ein Skript kannst du doch immer abbrechen, wenn im 'on error'-Teil 'return' angegeben ist:
try
error
on error
return -- bricht das Skript ohne Fehlermeldung ab
end try
Falls du selbstbestimmte Fehler abfangen möchtest:
try
error number -50000
on error errmsg number errNr
log errNr
if errNr = -50000 then
display dialog "Mein selbstgenerierter Fehler ist aufgetreten."
--return -- oder eine alternative Anweisung
else -- falls ein anderer Fehler auftritt
return
end if
end try
Ist's das, was du suchst? _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 16.01.2005 - 18:52 Titel: |
|
|
Snow hat Folgendes geschrieben: |
Ist's das, was du suchst? |
Das gute an schlecht formulierten Fragen im deinem Forum ist doch dass man von euch ungewollt eine ganze Menge super-Tipps mitgeliefert bekommt. Danke Snow!
Aber meine Frage(s. Warnung im ersten posting betr. Formulierungskünste)
ist die:
das Skript möchte ich gerade nicht mit return abschliessen lassen an der error-Stelle sondern wirklich mit error
Klar wenn ich es mit try aufrufe kriege ich keinen Dialog beim absichtlich erzeugten error und das wäre die Lösung um nicht die Error-Meldung lesen zu müssen.
Wenn ich aber das Skript direkt anlaufen lasse wird es mir an der error-Stelle eine Meldung liefern, diese will ich vermeiden. Aber wie?
In unserm Land sagt man dem: Batze UNDS Weggli:
ERROR JA UND DIALOG=( Komentar dazu) NEIN
oder wie geht das schon wieder mit dem runden Quadrat?
Ich wäre natürlich glücklich schon wenn man die Frage verstünde
 _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 16.01.2005 - 19:09 Titel: |
|
|
Willy, es gibt doch nur zwei Möglichkeiten einen Fehler zu behandeln:
1. abfangen und übergehen - dann läuft das Script weiter
2. abfangen und behandeln
Wenn du also die Fehlermeldung nicht haben willst, der Fehler aber nicht ignoriert werden soll, bleibt ja nur Alternative 2.
Fang den Fehler ab und lass dann das Script tun, was dir beliebt - es muss ja nicht return sein.
Du kannst den Fehler ja z.B. auch in ein Logfile schreiben lassen oder ähnliches. Oder unterschiedliche Handler aufrufen ...
Die einzige Möglichkeit, ein Skript wirklich mit einem Fehler abzubrechen, ist einen Anwenderabbruch zu simulieren:
error number -128
Das entspricht dem Verhalten des Cancel-Buttons in einem Standard-Dialog. Dies ist auch der einzige Fehler, der keinen Fehler-Dialog erzeugt.
Wenn ein Skript als Programm gespeichert ist, kommt noch 'quit' in Frage. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 16.01.2005 - 20:00 Titel: |
|
|
Snow hat Folgendes geschrieben: |
1. abfangen und übergehen - dann läuft das Script weiter
2. abfangen und behandeln
Wenn du also die Fehlermeldung nicht haben willst, der Fehler aber nicht ignoriert werden soll, bleibt ja nur Alternative 2. |
Jetzt weiss ich warum meine Frage nicht verstanden wird, sie scheint zu absurd:
Snow hat Folgendes geschrieben: |
der Fehler aber nicht ignoriert werden soll
|
er soll vor allem vom AS nicht weiter behandelt werden mittels einer Meldung wäre mein Wunsch sondern das AS sollte sich klaglos an der error-Skriptstelle verabschieden aber dem aufrufenden Skript einen error liefern, GENERIERN FüR..weitere Fromulierungen gesucht..darum Beispiel:
my Skript1()
on Skript1()
tell application "Finder"
try
my Skript2()
on error
--nur wenn Skript2() einen error erzeugt wird Skript2() angehalten und es geht hier weiter
display dialog "so kann ich an der error Meldung, die aus dem Skript2 stammen würde, trotz error im Skript2 vorbeikommen. Skript2 kann so also errors erzeugen ohne entspr. Dialog" default answer ¬
"[error] im Skript2 brauche ich aber für Skript 1 damit ich überhaupt hier hin komme (=unumständlichste Methode wenn man sich beide Skipts als sog. MAMMUTSKRIPTE vorstellt, kennst du ein solches in deinem Forum Snow? eine Horrorvorstellung..)"
end try
end tell
end Skript1
--my Skript2() --ohne die [--]--> direkter Aufruf von Skript2
on Skript2()
--zugegeben so füdliblutt macht dies Skript keinen Sinn kann aber sinnvoll eingesetzt werden
error " Skript2 möchte ich ebenfalls direkt aufrufen können mit
my Skript2()Wenn ichs aber aufrufe direkt, muss ichs lesen.
Was muss ich tun, dass es mir den error erzeugen lässt aber diesen Text und vor allem gar keinen Text zeigt nach direkt my Skript2()?"
end Skript2 _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 16.01.2005 - 20:27 Titel: |
|
|
Du hast keine verschiedenen Skripte oder Skriptobjekte, sonder nur verschiedene Handler. Jetzt ist mir schon klar, warum du kein 'return' gebrauchen kannst. Ein 'return' im zweiten Handler würde das gesamte Skript abbrechen und Handler 1 käme nicht mehr weiter zum Zug.
Wie wäre es mit folgender Lösung:
run Skript1
script Skript1
try
run my Skript2
on error errmsg
display dialog errmsg
-- und mach' weiter
beep 3
end try
end script
script Skript2
try
error number -30000
on error number errNr
error number errNr
end try
end script
Hier wird der Fehler des Skript2 im 'on error'-Teil des Skript1 ausgegeben. Hilft dir das weiter?
Und hier noch die Version mit Handlern:
Skript1()
on Skript1()
try
my Skript2()
on error errmsg
display dialog errmsg
-- und mach' weiter
beep 3
end try
end Skript1
on Skript2()
try
error number -30000
on error number errNr
error number errNr
end try
end Skript2 _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 16.01.2005 - 22:25 Titel: |
|
|
Snow hat Folgendes geschrieben: | Die einzige Möglichkeit, ein Skript wirklich mit einem Fehler abzubrechen, ist einen Anwenderabbruch zu simulieren:
error number -128
|
Genau das mach ich im handler: Skript2()
Snow hat Folgendes geschrieben: |
error number -128
Dies ist auch der einzige Fehler, der keinen Fehler-Dialog erzeugt. |
Genau das hab ich gesucht!
aber: error number -128 erzeugt doch einen Fehler-Dialog(klar nicht ein Dialog sondern eine Meldung) wenn Skript2() direkt aufgerufen wird:
so nämlich: BildliMenschImProfilSprechblase__user canceled
wie dies geschwätz verhindern?
ich probiers mal mit deiner Version
Snow hat Folgendes geschrieben: | "Und hier noch die Version mit Handlern: "
|
Frontbericht folgt umgehend: _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 16.01.2005 - 23:05 Titel: |
|
|
"ich moduliere etwas deine Handlerversion mit dieser kann ich nun einfacher zeigen:"
Handler1()
on Handler1()
try
my Handler2()
on error --errmsg
display dialog " mach' hier weiter weil Handler2() error ergibt"
-- und mach' weiter
beep 3
end try
display dialog "und: und mach' weiter"
end Handler1
on Handler2()
if 2 is not 3 then --um diesen Stuss Handler1() mitzuteilen setze ich error
error number -128
else
display dialog "2 = 3 offenbar und mach hier auch weiter"
end if
end Handler2
-- bis hier alles wunschgemäss wenn auch 2. Modell[= my Handler2() ]ohne Meldung bliebe:
my Handler2() (*soll nur zeigen dass doch eine error-Meldung aktiviert wird falls Handler2() direkt aufgerufen wird *)
"Die error-Meldung [user canceled] kann wohl zumindest einfach nicht verhindert werden?" _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 16.01.2005 - 23:16 Titel: |
|
|
Hi Willy,
mir ist noch eine Möglichkeit eingefallen. Mir ist zwar immer noch nicht klar, was du damit bezwecken willst, aber interressant ist das Thema ja durchaus.
Skript1()
on Skript1()
if (my Skript2()) is false then
display dialog "Fehler in Skript2"
end if
end Skript1
on Skript2()
try
2 = 3 -- produziert Fehler
on error
return false
end try
end Skript2 _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
|