            _("for search use only dictionary with this bookname"),
            _("bookname") },
          { "non-interactive", 'n', 0, G_OPTION_ARG_NONE, &non_interactive,
-@@ -101,7 +101,7 @@ int main(int argc, char *argv[]) try {
+@@ -101,7 +110,7 @@ int main(int argc, char *argv[]) try {
            _("output must be in utf8"), nullptr },
          { "utf8-input", '1', 0, G_OPTION_ARG_NONE, &utf8_input,
            _("input of sdcv in utf8"), nullptr },

diff --git a/src/sdcv.cpp b/src/sdcv.cpp
index 0c75eb1..da3ff4c 100644
--- a/src/sdcv.cpp
+++ b/src/sdcv.cpp
@@ -88,7 +88,7 @@ int main(int argc, char *argv[]) try {
           _("display version information and exit"), nullptr },
         { "list-dicts", 'l', 0, G_OPTION_ARG_NONE, &show_list_dicts,
           _("display list of available dictionaries and exit"), nullptr },

           _("use this directory as path to stardict data directory"),
           _("path/to/dir") },
         { "only-data-dir", 'x', 0, G_OPTION_ARG_NONE, &only_data_dir,
@@ -182,7 +191,9 @@ int main(int argc, char *argv[]) try {
         // add bookname to list
         gchar **p = get_impl(use_dict_list);
         while (*p) {
-            order_list.push_back(bookname_to_ifo.at(*p));
+            if (bookname_to_ifo.count(*p) > 0) { // don't fail if -u <bookname> is not found
+                order_list.push_back(bookname_to_ifo.at(*p));
+            }
             ++p;
