Tôi hiện đang viết một số mã cho UnconstrainedMelody có các phương thức chung để làm với enums.
Bây giờ, tôi có một lớp tĩnh với một loạt các phương thức chỉ được sử dụng với enum "flags". Tôi không thể thêm điều này làm ràng buộc ... vì vậy có thể chúng cũng sẽ được gọi với các loại enum khác. Trong trường hợp đó, tôi muốn ném một ngoại lệ, nhưng không chắc nên ném cái nào.
Chỉ để làm cụ thể này, nếu tôi có một cái gì đó như thế này:
// Returns a value with all bits set by any values
public static T GetBitMask<T>() where T : struct, IEnumConstraint
{
if (!IsFlags<T>()) // This method doesn't throw
{
throw new ???
}
// Normal work here
}
Ngoại lệ tốt nhất để ném là gì? ArgumentException
nghe có vẻ hợp lý, nhưng đó là một đối số kiểu chứ không phải là một đối số bình thường, có thể dễ dàng nhầm lẫn mọi thứ. Tôi có nên giới thiệu TypeArgumentException
lớp học của riêng mình không? Sử dụng InvalidOperationException
? NotSupportedException
? Còn gì nữa không?
Tôi muốn thay không tạo ra ngoại lệ của riêng tôi cho điều này trừ khi nó là rõ điều phải làm.