私は一般的に例外処理について考えてきました。
User指定されたユーザー名パラメーターに基づいてオブジェクトを取得するメソッドを実装するためのベストプラクティスは何でしょうか。下記参照。  
    /// <summary>
    /// Gets a user.
    /// </summary>
    /// <param name="username">Username</param>
    /// <returns>User instance</returns>
    public Model.User GetUser(string username)
    {
        return Context.Users.SingleOrDefault(u => u.Username.ToLower() == username.ToLower());
    }
そのパラメータを持つユーザーが存在しない場合はusername、nullオブジェクトを返すUserか、ユーザーが存在しないことを指定するカスタム例外をスローする方がよいでしょう。