diff --git a/src/queue/PlaylistControl.cxx b/src/queue/PlaylistControl.cxx
index 5310a0fa1c9d10565a5b3ebb0e1818a6d1795007..3c7a69c61335ce7df34627fe6e306ac04e74a650 100644
--- a/src/queue/PlaylistControl.cxx
+++ b/src/queue/PlaylistControl.cxx
@@ -228,11 +228,8 @@ playlist::SeekSongPosition(PlayerControl &pc, unsigned song,
 			   SongTime seek_time,
 			   Error &error)
 {
-	if (!queue.IsValidPosition(song)) {
-		error.Set(playlist_domain, int(PlaylistResult::BAD_RANGE),
-			  "Bad range");
-		return false;
-	}
+	if (!queue.IsValidPosition(song))
+		throw PlaylistError::BadRange();
 
 	unsigned i = queue.random
 		? queue.PositionToOrder(song)
@@ -246,11 +243,8 @@ playlist::SeekSongId(PlayerControl &pc, unsigned id, SongTime seek_time,
 		     Error &error)
 {
 	int song = queue.IdToPosition(id);
-	if (song < 0) {
-		error.Set(playlist_domain, int(PlaylistResult::NO_SUCH_SONG),
-			  "No such song");
-		return false;
-	}
+	if (song < 0)
+		throw PlaylistError::NoSuchSong();
 
 	return SeekSongPosition(pc, song, seek_time, error);
 }