Есть ли у Фобоса (и / или Танго) набор предопределенных типов исключений? - PullRequest
5 голосов
/ 20 мая 2011

Документация D кажется немного грязной, и я не могу найти эту информацию где-либо на официальном сайте.Мне нужны некоторые распространенные типы исключений (например, NotFiniteNumberException, FileIOException и т. Д.), Существуют ли они в основных библиотеках, или мне нужно было бы их самому свернуть?

Ответы [ 2 ]

7 голосов
/ 20 мая 2011

Некоторые из них существуют, а некоторые нет.Лучшая стратегия для их поиска - просто выполнить глобальный поиск для поиска текста : Exception во время выполнения D (и Фобоса) и посмотреть, что представляют собой все существующие ранее исключения.

Скорее всего, выПридется развернуть хотя бы несколько своих собственных.

В результате этого поиска я обнаружил следующее:

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

(Конечно, если есть исключения, наследуемые от классовкроме Exception, или если интервал был странным, то их нет в этом списке.)

3 голосов
/ 20 мая 2011

Иерархия исключений была достаточно продумана в Tango, и общий набор доступен из tango.core.Exception.

Чем более специализировано ваше исключение, тем менее вероятно, что вы найдете его там, но предполагалось, что все исключения должны иметь смысл как подклассы существующих исключений.

...