Pergunta

A documentação do D parece um pouco confusa e não consigo encontrar essas informações em nenhum lugar do site oficial.Estou precisando de alguns tipos de exceção comuns (por exemploNotFiniteNumberException, FileIOException, tipos como esse), eles existem nas bibliotecas principais ou eu mesmo teria que lançá-los?

Foi útil?

Solução

Alguns deles existem, outros não.A melhor estratégia para encontrá-los é apenas fazer uma pesquisa global pelo texto : Exception no tempo de execução D (e Phobos), e vendo quais são todas as exceções preexistentes.

Muito provavelmente, porém, você terá que implementar pelo menos alguns dos seus próprios.

O que encontrei nesta pesquisa foi o seguinte:

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

(Claro, se houver exceções herdadas de classes diferentes Exception, ou se o espaçamento for estranho, então eles não estão nesta lista.)

Outras dicas

A hierarquia de exceção recebeu bastante algum pensamento no tango, e um conjunto geral está disponível no Tango.Core.Exception.

Quanto mais especializada a sua exceção é, menos provável é que você encontre lá, mas a intenção foi que todas as exceções devem fazer sentido como subclasses para as exceções existentes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top