S3871 — Exception types should be "Public"

Language
VB.NET
Type
Code smell
Severity
Critical
Tags
error-handling, api-design

Why is this an issue?

The point of having custom exception types is to convey more information than is available in standard types. But custom exception types must be public for that to work.

If a method throws a non-public exception, the best you can do on the caller’s side is to catch the closest public base of the class. However, you lose all the information that the new exception type carries.

This rule will raise an issue if you directly inherit one of the following exception types in a non-public class:

How to fix it

Code examples

Noncompliant code example


Friend Class MyException    ' Noncompliant
    Inherits Exception
    ' ...
End Class

Compliant solution


Public Class MyException
    Inherits Exception
    ' ...
End Class

Resources

Documentation

↑ Back to top