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