diff --git a/src/mixer/MixerType.cxx b/src/mixer/MixerType.cxx
index e792123df..7e73beb3c 100644
--- a/src/mixer/MixerType.cxx
+++ b/src/mixer/MixerType.cxx
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2017 The Music Player Daemon Project
+ * Copyright 2003-2018 The Music Player Daemon Project
  * http://www.musicpd.org
  *
  * This program is free software; you can redistribute it and/or modify
@@ -20,11 +20,13 @@
 #include "config.h"
 #include "MixerType.hxx"
 
+#include <stdexcept>
+
 #include <assert.h>
 #include <string.h>
 
 MixerType
-mixer_type_parse(const char *input) noexcept
+mixer_type_parse(const char *input)
 {
 	assert(input != NULL);
 
@@ -37,5 +39,5 @@ mixer_type_parse(const char *input) noexcept
 	else if (strcmp(input, "null") == 0)
 		return MixerType::NULL_;
 	else
-		return MixerType::UNKNOWN;
+		throw std::runtime_error("Unrecognized mixer type");
 }
diff --git a/src/mixer/MixerType.hxx b/src/mixer/MixerType.hxx
index 6c6d4cb47..ce2832981 100644
--- a/src/mixer/MixerType.hxx
+++ b/src/mixer/MixerType.hxx
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2017 The Music Player Daemon Project
+ * Copyright 2003-2018 The Music Player Daemon Project
  * http://www.musicpd.org
  *
  * This program is free software; you can redistribute it and/or modify
@@ -23,9 +23,6 @@
 #include "Compiler.h"
 
 enum class MixerType {
-	/** parser error */
-	UNKNOWN,
-
 	/** mixer disabled */
 	NONE,
 
@@ -42,12 +39,12 @@ enum class MixerType {
 /**
  * Parses a #MixerType setting from the configuration file.
  *
- * @param input the configured string value; must not be NULL @return
- * a #MixerType value; #MixerType::UNKNOWN means #input could not be
- * parsed
+ * Throws if the string could not be parsed.
+ *
+ * @param input the configured string value
+ * @return a #MixerType value
  */
-gcc_pure
 MixerType
-mixer_type_parse(const char *input) noexcept;
+mixer_type_parse(const char *input);
 
 #endif
diff --git a/src/output/Init.cxx b/src/output/Init.cxx
index 0924a0f00..9cac298fe 100644
--- a/src/output/Init.cxx
+++ b/src/output/Init.cxx
@@ -87,9 +87,8 @@ audio_output_detect()
  * This handles the deprecated options mixer_type (global) and
  * mixer_enabled, if the mixer_type setting is not configured.
  */
-gcc_pure
 static MixerType
-audio_output_mixer_type(const ConfigBlock &block) noexcept
+audio_output_mixer_type(const ConfigBlock &block)
 {
 	/* read the local "mixer_type" setting */
 	const char *p = block.GetBlockValue("mixer_type");
@@ -117,7 +116,6 @@ audio_output_load_mixer(EventLoop &event_loop, FilteredAudioOutput &ao,
 
 	switch (audio_output_mixer_type(block)) {
 	case MixerType::NONE:
-	case MixerType::UNKNOWN:
 		return nullptr;
 
 	case MixerType::NULL_: