| 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 | 
		 | 
	
	
		  | 
	
	
		 |