| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Aug 2003 Ort: Berlin
Beiträge: 37
| Vorhandensein eines Objektes prüfen...
Kann gut sein, dass ich gerade den Wald vor Bäumen nicht mehr sehe,… AAaaaaber ich habe folgendes Problem: Ich habe ein value object A, welches ein weiteres value object B enthält Code: objectA.objectB Ich habe also total blauäugig folgende Prüfung durchgeführt: Code: if(objectA.objectB != null) Code: TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich. Kann mit da eventuell jemand aus der Patsche helfen? |
| | |
| | #2 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.164
|
Der Fehler tritt bereits in der if-Bedingung auf, weil bereits das erste Objekt nicht existiert. Du solltest deshalb jedes Objekt einzeln prüfen: PHP-Code:
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
| | #3 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
u.U. auch if (objectA && objectA!=null && objectA.objectB){.. und natürlich try { } catch.. möglich: die variable objectA wäre vorhanden, besitzt aber kein objectB. damit greifst du auch auf etwas zu, das es garnicht gibt.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #4 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.164
| Warum das? IMHO ist das doppelt gemoppelt: Wenn objectA==null ist, wäre auch Boolean(objectA)==false?!
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Aug 2003 Ort: Berlin
Beiträge: 37
|
@ Martin Kraft Danke für den Hinweis! Daran hat es tatsächlich gelegen. Habe die Komponente im Testbetrieb versucht zu starten und dabei vergessen das result-object zuzuweisen. ... den Wald vor Bäumen und so... ^^ |
| | |
| | #6 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
| hatte schon mehrmals den fall, das die browser fehler melden, die in flash niemals geworfen werden. da hat ein zusätzlicher test auf null immer geholfen.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #7 (permalink) | |
| Neuer User Registriert seit: Oct 2008
Beiträge: 148
|
hi Zitat:
ich würde den vorschlag von martin kraft vorziehen... | |
| | |
| | #8 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
ja, vielleicht schon der titel: 'Vorhandensein eines Objektes prüfen...' lässt auf unsauberes programmieren schliessen. weil: wer kennt da seine eigenen objekte nicht? aber, es gibt nunmal solche situationen. und warum nur gibt es dann überhaupt try/catch ? alles hat irgendwo seine berechtigung. und gerade in catch kann man sich dinge anzeigen lassen, wenn etwas nicht so ist wie es sein soll. also ja: besonders in der entwicklungsphase geeignet.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #9 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.142
|
@H.G.: Nicht jedes Objekt ist zwangsläufig zu initialisiert, dass alle Properties schon Werte besitzen oder andere Object referenzieren (sie werden lazy gebaut). try {} catch {} sind ja dann doch eher für "richtige" Ausnahmen gedacht wie zum Beispiel fehlgeschlagene IO Operationen. try { } catch {} ist in ActionScript imo aber auch eher das größte Geschütz, da vieles über ErrorEvents verarbeitet werden kann und auch sollte, da alles asynchron ist. Da in Flex vieles, obwohl asynchron, durch eine synchron wirkende Facade versteckt wird, sind null Checks die saubere Variante. Das ganze mal illustriert an folgendem Beispiel und gerade in der UI Entwicklung können die Modelle/Daten für die Views auch leer sein: Code: package fs.components
{
import mx.core.IDataRenderer;
import mx.core.UIComponent;
public class Component extends UIComponent implements IDataRenderer
{
private var _data:Object;
private var _dataChanged:Boolean;
public function get data():Object
{
return _data;
}
public function set data(value:Object):void
{
if (_data === value)
{
return;
}
_data = value;
_dataChanged = true;
invalidateProperties();
invalidateSize();
invalidateDisplayList();
}
public function Component()
{
}
override protected function commitProperties():void
{
super.commitProperties();
if (_dataChanged)
{
if (_data)
{
// process data
}
else
{
// process null
}
}
}
}
}
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Prüfen ob Instanz eines Objektes existiert | tobyff | ActionScript 2 | 3 | 08-07-2007 21:17 |
| Mehrfachumrandung eines Objektes???? | blancbone | Flash MX | 3 | 08-08-2003 19:02 |
| Position eines Objektes | tobisemmet | Flash MX | 2 | 30-10-2002 09:53 |
| name eines Objektes herausfinden | netTrek | Softwarearchitektur und Entwurfsmuster | 35 | 30-08-2002 08:57 |
| hintergrund eines objektes | tupasH | Flash 4 und Flash 5 | 5 | 25-05-2002 00:13 |