Frage

Mit Bezug href="https://stackoverflow.com/questions/94488"> auf
und
Sind alle .NET Ausnahmen serialisierbar? ...

Warum sollte meine Ausnahmen serialisierbar?
Jemand sagte: „Es kann einen Fehler in Betracht gezogen werden“, wenn eine benutzerdefinierte Ausnahme von einem Dritten Bibliothek definiert, nicht serialisierbar ist. Warum?

Warum sind Ausnahmen anders als andere Klassen in dieser Hinsicht?

War es hilfreich?

Lösung

Weil Ihre Ausnahmen müssen möglicherweise zwischen verschiedenen AppDomains vermarshallten werden, und wenn sie es nicht sind (richtig) serializable erhalten Sie wertvolle Debug-Informationen zu verlieren. Im Gegensatz zu anderen Klassen, werden Sie nicht die Kontrolle darüber haben, ob Ihre Ausnahme wird rangieren -. Es wird


Wenn ich meine „Sie werden nicht die Kontrolle haben“ Ich meine, dass Klassen, die Sie im Allgemeinen einen endlichen Raum der Existenz und die Existenz schaffen, ist bekannt. Wenn es ein Rückgabewert und jemand versucht, es in einer anderen AppDomain zu nennen (oder auf einer anderen Maschine) sie einen Fehler bekommen und kann nur sagen: „Tu es nicht, dass die Art und Weise nutzen.“ Der Anrufer weiß, dass sie es in einen Typ zu konvertieren, die (durch Umwickeln des Methodenaufruf) serialisiert werden kann. nicht gefangen werden, aber da Ausnahmen von der Spitze sprudelt, wenn sie AppDomain Grenzen überschreiten Sie nicht einmal wissen, Sie hatten. Ihre individuelle Anwendungsausnahme 20 Ebenen tief in einer anderen AppDomain könnte die Ausnahme an der Main gemeldet werden () und nichts auf dem Weg geht es in eine serializable Ausnahme für Sie konvertieren.

Andere Tipps

Neben Talljoe Antwort kann Ihre Ausnahmen über Web Services als auch weitergegeben werden, in diesem Fall die Ausnahme serializable / deserializable sein muss, damit es in XML und übermittelt durch die Web-Service gedreht werden kann

Ich denke, dass die Standardeinstellung für alle Klassen Serializable sein sollten, wenn sie eine Klasse enthalten, die explizit nicht serialisierbar ist. Es ist ärgerlich, nicht in der Lage sein, eine Klasse zu übertragen, nur weil einige Designer nicht darüber denken.

Das gleiche mit „Final“, sollten alle Variablen „Final“ standardmäßig sein, wenn Sie ausdrücklich sagen, dass sie „Veränderliche“.

Auch ich bin nicht sicher, ob es Sinn macht, eine Variable, die nicht privat ist.

Na ja, muss meine eigene Sprache entwickeln.

Aber die Antwort ist, wissen Sie nicht, wie Sie Ihre Ausnahme verwendet werden, und sie sind davon ausgegangen, über Ferngespräche in der Lage sein geworfen werden.

Ein weiterer Ort, wo Objekte serialisierbar sein erforderlich ist Asp.Net Session. Wir speichern letzte Ausnahme in Session und nicht serializable Ausnahmen brauchen zusätzliche Übersetzung ihre Details zu speichern, wie serializable (Angabe ursprüngliche Ausnahme als inneres nicht hilft)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top