هل لدى Phobos (و/أو Tango) مجموعة من أنواع الاستثناءات المحددة مسبقًا؟

StackOverflow https://stackoverflow.com/questions/6069066

  •  07-09-2020
  •  | 
  •  

سؤال

يبدو أن وثائق D فوضوية بعض الشيء، ولا أستطيع العثور على هذه المعلومات في أي مكان على الموقع الرسمي.أحتاج إلى بعض أنواع الاستثناءات الشائعة (على سبيل المثال:NotFiniteNumberException، وFileIOException، وأنواع من هذا القبيل)، هل هذه موجودة في المكتبات الأساسية، أم هل يجب علي تشغيلها بنفسي؟

هل كانت مفيدة؟

المحلول

بعضها موجود، وبعضها لا.أفضل استراتيجية للعثور عليهم هي إجراء بحث عالمي عن النص : Exception في وقت تشغيل D (وPhobos)، ورؤية جميع الاستثناءات الموجودة مسبقًا.

على الرغم من ذلك، على الأرجح، سيتعين عليك طرح بعض ما لديك على الأقل.

وما وجدته من خلال هذا البحث هو ما يلي:

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, ، أو إذا كانت هناك مسافات غريبة، فهي غير موجودة في هذه القائمة.)

نصائح أخرى

تم إعطاء التسلسل الهرمي الاستثناء بعض التفكير في التانغو، ومجموعة عامة متاحة من Tango.core.exception.

المفضل استثناء الخاص بك هو، كلما قل ذلك من المحتمل أن تجدها هناك، لكن النية هي أن جميع الاستثناءات يجب أن تكون منطقية مثل الفئات الفرعية إلى الاستثناءات الحالية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top