I am creating a C# application and am trying to take advantage of custom exceptions when appropriate. I've looked at other questions here and at the MSDN design guidelines but didn't come across anything as specific as what I'm wondering here.
What is the best practice for how to organize custom exceptions?
For example, I have a class Disk
that throws an InvalidDiskException
. Disk
is the only class that throws this exception.
Currently, I have the exception nested in the Disk.cs file as follows:
Disk.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OrganizingExceptionsInCSharp
{
class Disk
{
[Serializable]
public class InvalidDiskException : Exception
{
public InvalidDiskException() { }
public InvalidDiskException(string message) : base(message) { }
public InvalidDiskException(string message, Exception innerException) : base(message, innerException) { }
}
//
// Code that throws the exception.
//
}
}
Should the exception be defined at the same level as Disk (ie. not nested within)? Should the exception be nested within Disk but kept it's own partial file? Might there be other, better options? Please let me know if there are other considerations I haven't thought of.
I'd define my custom exceptions in {MyNamespace}.Exceptions
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With