正确使用.NET异常

des*_*old 4 c# exception

抛出以下实例的正确异常是什么?

如果,例如,我有一个类:专辑与歌曲的集合:

List<Song>
Run Code Online (Sandbox Code Playgroud)

Album中添加歌曲的方法:

public void AddSong(Song song)
{
    songs.Add(song);
}
Run Code Online (Sandbox Code Playgroud)

如果用户尝试添加已存在的歌曲,我应该抛出异常吗?如果是这样,什么类型的例外?

我听过这样的短语:"只在异常情况下使用异常",但我想告诉客户端实现Album究竟出了什么问题(不只是返回一个布尔值).

Ben*_*igt 5

在完全相同的情况下,Microsoft的.NET设计者选择使用描述性消息抛出ArgumentException.哦,他们对此非常一致.