Domanda

La documentazione D sembra essere un po 'disordinata, e non sono in grado di trovare queste informazioni ovunque sul sito ufficiale.Ho bisogno di alcuni tipi di eccezione comuni (ad esempio notfinitenumberexception, fileeexception, tipi come quello), esistono nelle biblioteche del nucleo o dovrei rotolare questi me stesso?

È stato utile?

Soluzione

Alcuni di loro esistono, alcuni di loro no.La migliore strategia per trovarli è semplicemente eseguire una ricerca globale cerca il testo : Exception nel runtime D (e Phobos), e vedere ciò che tutte le eccezioni preesistenti sono.

Molto probabilmente, però, dovrai stendere almeno alcuni dei tuoi.

Quello che ho trovato attraverso questa ricerca è stato il seguente:

druntime\src\core\demangle.d(72):static class ParseException : Exception
druntime\src\core\demangle.d(81):static class OverflowException : Exception
druntime\src\core\exception.d(297):     class UnicodeException : Exception
druntime\src\core\thread.d(34):         class ThreadException : Exception
druntime\src\core\thread.d(51):         class FiberException : Exception
druntime\src\core\time.d(2703):         class TimeException : Exception
druntime\src\core\sync\exception.d(21): class SyncException : Exception
phobos\std\boxer.d(511):                class UnboxException : Exception
phobos\std\concurrency.d(198):          class MessageMismatch : Exception
phobos\std\concurrency.d(210):          class OwnerTerminated : Exception
phobos\std\concurrency.d(225):          class LinkTerminated : Exception
phobos\std\concurrency.d(240):          class PriorityMessageException: Exception
phobos\std\concurrency.d(255):          class MailboxFull : Exception
phobos\std\conv.d(33):                  class ConvException : Exception
phobos\std\demangle.d(26):      private class MangleException : Exception
phobos\std\encoding.d(2056):            class EncodingException : Exception
phobos\std\exception.d(792):            class ErrnoException : Exception
phobos\std\file.d(183):                 class FileException : Exception
phobos\std\json.d(418):                 class JSONException : Exception
phobos\std\regexp.d(161):               class RegExpException : Exception
phobos\std\socket.d(121):               class SocketException: Exception
phobos\std\socket.d(455):               class HostException: Exception
phobos\std\socket.d(670):               class AddressException: Exception
phobos\std\stdio.d(2111):               class StdioException : Exception
phobos\std\stream.d(44):                class StreamException: Exception
phobos\std\utf.d(45):                   class UtfException : Exception
phobos\std\variant.d(1153):      static class VariantException : Exception
phobos\std\xml.d(2726):                 class XMLException : Exception
phobos\std\zip.d(44):                   class ZipException : Exception
phobos\std\zlib.d(42):                  class ZlibException : Exception
phobos\std\windows\registry.d(75):      class Win32Exception : Exception
.

(ovviamente, se ci sono eccezioni che ereditano da lezioni diverse da Exception, o se la spaziatura era strana, allora non sono in questa lista.)

Altri suggerimenti

L'eccezione Gerarchy è stata data un certo pensiero in Tango, e un set generale è disponibile da Tango.Core.Exception.

Più è specializzata la tua eccezione è, meno è probabile che tu lo trovi lì, ma l'intenzione era che tutte le eccezioni dovrebbero dare un senso alle sottoclassi alle eccezioni esistenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top