Repository navigation
Document exceptions #148
Copy link
Copy link
Open
Labels
Area: DocumentationRelates to documentation in terms of XML Docs, README, &c.Relates to documentation in terms of XML Docs, README, &c.Priority: 3Severity 0: Nice to haveStatus 2: ScheduledPlanned for an upcoming release.Planned for an upcoming release.Type: ImprovementImproves the functionality or interface of an existing feature.Improves the functionality or interface of an existing feature.
Milestone
Description
Document, via <exception> tags, every member across the distributable libraries that throws.
Scope
- Direct
throws Contract.*guards (decoded to their thrown type)- Calls to curated validators (e.g.,
TopicFactory.ValidateKey(),BindingModelValidator.*), one hop only
Deferred
Exceptions that merely propagate up from deeper library calls, and BCL exceptions latent in implementations.
Notes
- Legacy
<requires>tags (from Code Contracts) that describe a throw should be replaced by<exception>, with the type derived from the code (not the stale attribute)- Route each tag to a commit by its decoded type, not its
exception=label
- Route each tag to a commit by its decoded type, not its
- Contractual throws should be documented on the interface so implementations inherit them via
<inheritdoc/>- Only implementation-specific throws will be documented on the concrete type
Tasks
- Foundation
- Correct inverted "Thrown when
isValidreturnstrue" bodies inContract.cs, as the guard throws whenfalse - Finalize the curated validator set (confirm e.g.,
ValidateKey()andBindingModelValidator.*) - Build a site inventory, classifying the non-generic
Contract.Requires(),Contract.Assume()sites and theTopicRepositoryExceptionthrows (base,SqlTopicRepository) once
- Correct inverted "Thrown when
- By exception type
-
InvalidKeyException:ValidateKey()consumers, explicitContract.Requires<InvalidKeyException>(), and direct throws (continues prior work) -
ArgumentNullException: ExplicitContract.Requires<ArgumentNullException>(),Contract.Assume<ArgumentNullException>(), and bareContract.Requires() -
InvalidOperationException: Bool-expressionContract.Requires(), non-genericContract.Assume(), and direct throws -
ArgumentException: ExplicitContract.Requires<ArgumentException>()and direct throws -
ArgumentOutOfRangeException: ExplicitContract.Requires<ArgumentOutOfRangeException>()and direct throws- Includes converting the stale
maxHops<requires>tag here, which is labeledArgumentExceptionbut throwsArgumentOutOfRangeException
- Includes converting the stale
-
ReferentialIntegrityException: Direct throws in the repositoryDelete(),Move(); put onITopicRepository -
TopicNotFoundException: ExplicitContract.Requires<TopicNotFoundException>()and direct throws; put onITopicRepository -
TopicRepositoryException: Direct throws; base go onITopicRepository,SqlTopicRepository-only stay there -
MappingModelValidationException: Direct throws, plusBindingModelValidator.*propagated one hop to the publicMapAsync()entry points -
TopicMappingException: Direct throws in mapping -
InvalidTypeException: Direct throws in mapping
-
- Verify
<GenerateDocumentationFile>is enabled for each distributable
Out of scope:
- The
Obsolete/folder NotImplementedExceptionstubs- The non-distributable
*.Host,*.Tests,*.TestDoublesprojects
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Area: DocumentationRelates to documentation in terms of XML Docs, README, &c.Relates to documentation in terms of XML Docs, README, &c.Priority: 3Severity 0: Nice to haveStatus 2: ScheduledPlanned for an upcoming release.Planned for an upcoming release.Type: ImprovementImproves the functionality or interface of an existing feature.Improves the functionality or interface of an existing feature.
Activity