diff --git a/examples/mvvmcore/SampleCore/settings.xml b/examples/mvvmcore/SampleCore/settings.xml
index 8f2412a..80fbb91 100644
--- a/examples/mvvmcore/SampleCore/settings.xml
+++ b/examples/mvvmcore/SampleCore/settings.xml
@@ -109,5 +109,8 @@
 		
+		
 	
 
diff --git a/src/mvvmquick/ErrorLabel.qml b/src/mvvmquick/ErrorLabel.qml
new file mode 100644
index 0000000..de4c1bb
--- /dev/null
+++ b/src/mvvmquick/ErrorLabel.qml
@@ -0,0 +1,7 @@
+import QtQuick 2.10
+import QtQuick.Controls 2.3
+
+Label {
+	text: qsTr("Failed to load edit view!")
+	color: "#800000"
+}
diff --git a/src/mvvmquick/inputviewfactory.cpp b/src/mvvmquick/inputviewfactory.cpp
index c11bc78..15fc8f8 100644
--- a/src/mvvmquick/inputviewfactory.cpp
+++ b/src/mvvmquick/inputviewfactory.cpp
@@ -50,7 +50,7 @@ QUrl InputViewFactory::getInputUrl(const QByteArray &type, const QVariantMap &vi
 		return QStringLiteral("qrc:/qtmvvm/inputs/RadioListEdit.qml");
 	else {
 		logCritical() << "Failed to find any input view for input type:" << type;
-		return QUrl();
+		return QStringLiteral("qrc:/qtmvvm/inputs/ErrorLabel.qml");
 	}
 }
 
diff --git a/src/mvvmquick/qtmvvmquick_module.qrc b/src/mvvmquick/qtmvvmquick_module.qrc
index bb7821f..ebee3b9 100644
--- a/src/mvvmquick/qtmvvmquick_module.qrc
+++ b/src/mvvmquick/qtmvvmquick_module.qrc
@@ -9,6 +9,7 @@
         UrlField.qml
         Switch.qml
         RadioListEdit.qml
+        ErrorLabel.qml
     
     
         BoolDelegate.qml
diff --git a/src/mvvmwidgets/inputwidgetfactory.cpp b/src/mvvmwidgets/inputwidgetfactory.cpp
index b9e20a8..b99226b 100644
--- a/src/mvvmwidgets/inputwidgetfactory.cpp
+++ b/src/mvvmwidgets/inputwidgetfactory.cpp
@@ -1,6 +1,7 @@
 #include "inputwidgetfactory.h"
 #include "inputwidgetfactory_p.h"
-#include 
+
+#include 
 
 #include 
 #include 
@@ -13,6 +14,8 @@
 
 #include 
 
+#include 
+
 using namespace QtMvvm;
 
 InputWidgetFactory::InputWidgetFactory() :
@@ -64,10 +67,8 @@ QWidget *InputWidgetFactory::createInput(const QByteArray &type, QWidget *parent
 		widget = edit;
 	} else if(type == "selection" || type == "list")
 		widget = new SelectComboBox(parent);
-	else {
-		logCritical() << "Failed to find any input view for input type:" << type;
-		return nullptr; //TODO throw?
-	}
+	else
+		throw PresenterException("Unable to find an input view for type" + type);
 
 	for(auto it = viewProperties.constBegin(); it != viewProperties.constEnd(); it++)
 		widget->setProperty(qUtf8Printable(it.key()), it.value());
diff --git a/src/mvvmwidgets/settingsdialog.cpp b/src/mvvmwidgets/settingsdialog.cpp
index 4e2e3ae..769d5b4 100644
--- a/src/mvvmwidgets/settingsdialog.cpp
+++ b/src/mvvmwidgets/settingsdialog.cpp
@@ -186,23 +186,28 @@ void SettingsDialogPrivate::createEntry(const SettingsElements::Entry &entry, QW
 		});
 		content = btn;
 	} else {
-		auto widgetFactory = WidgetsPresenterPrivate::currentPresenter()->inputWidgetFactory();
-		content = widgetFactory->createInput(entry.type, sectionWidget, entry.properties);
-		if(!content) {
-			logWarning() << "Failed to create settings widget for type" << entry.type;
-			return;
+		try {
+			auto widgetFactory = WidgetsPresenterPrivate::currentPresenter()->inputWidgetFactory();
+			content = widgetFactory->createInput(entry.type, sectionWidget, entry.properties);
+			auto property = content->metaObject()->userProperty();
+			property.write(content, viewModel->loadValue(entry.key, entry.defaultValue));
+			if(property.hasNotifySignal()) {
+				auto changedSlot = metaObject()->method(metaObject()->indexOfSlot("propertyChanged()"));
+				connect(content, property.notifySignal(),
+						this, changedSlot);
+			} else
+				changedEntries.insert(content);
+
+			entryMap.insert(content, {entry, property});
+		} catch (PresenterException &e) {
+			logWarning() << "Failed to create settings widget for key"
+						 << entry.key
+						 << "with error:" << e.what();
+			content = new QLabel(tr("Failed to load edit view!"), sectionWidget);
+			auto pal = content->palette();
+			pal.setColor(QPalette::WindowText, Qt::darkRed);
+			content->setPalette(pal);
 		}
-
-		auto property = content->metaObject()->userProperty();
-		property.write(content, viewModel->loadValue(entry.key, entry.defaultValue));
-		if(property.hasNotifySignal()) {
-			auto changedSlot = metaObject()->method(metaObject()->indexOfSlot("propertyChanged()"));
-			connect(content, property.notifySignal(),
-					this, changedSlot);
-		} else
-			changedEntries.insert(content);
-
-		entryMap.insert(content, {entry, property});
 	}
 
 	auto label = new QLabel(entry.title + tr(":"), sectionWidget);
diff --git a/src/mvvmwidgets/widgetspresenter.cpp b/src/mvvmwidgets/widgetspresenter.cpp
index 3a89acb..7275990 100644
--- a/src/mvvmwidgets/widgetspresenter.cpp
+++ b/src/mvvmwidgets/widgetspresenter.cpp
@@ -301,11 +301,6 @@ void WidgetsPresenter::presentMessageBox(const MessageConfig &config, QPointer result)
 {
 	auto input = d->inputViewFactory->createInput(config.subType(), nullptr, config.viewProperties());
-	if(!input) {
-		throw PresenterException(QByteArrayLiteral("Unable to find an input for type") +
-								 config.subType());
-	}
-
 	QWidget *parent = nullptr;
 	if(!config.viewProperties().value(QStringLiteral("modal"), false).toBool())
 		parent = QApplication::activeWindow();