diff --git a/eval.py b/eval.py
index 61efc4250d444a966e70ec39ad324984958daea8..3e0ab5adc8c5c48f96eb1a1e27eb43e6712dc421 100755
--- a/eval.py
+++ b/eval.py
@@ -20,6 +20,12 @@ ARTIFACT_DESC = subprocess.check_output(
     'git describe --dirty --always'.split(), cwd=ROOT_DIR, text=True)[:-1]
 
 
+def err(msg: str):
+    """print error message and exit with statsu 1"""
+    print(f'ERROR: {msg}', file=sys.stderr)
+    sys.exit(1)
+
+
 def emper_create_env_worker_count(worker_count):
     return f'EMPER_WORKER_COUNT={worker_count}'
 
@@ -720,6 +726,22 @@ if __name__ == '__main__':
     _sizes = args.sizes or SIZES
     ARGS = list(itertools.product(_cons, _sizes))
 
+    # select emper flavors to evaluate
+    selected_flavors = EMPER_FLAVORS
+    if args.flavors:
+        filtered_flavors = {}
+        for selected_flavor in args.flavors:
+            selection = {
+                f: selected_flavors[f]
+                for f in fnmatch.filter(selected_flavors.keys(),
+                                        selected_flavor)
+            }
+            if not selection:
+                err(f'{selected_flavor} does not select any available flavor')
+            filtered_flavors.update(selection)
+
+        selected_flavors = filtered_flavors
+
     print("Building the artifact ...")
     make_cmd = ['make']
     if not args.verbose:
@@ -743,18 +765,6 @@ if __name__ == '__main__':
     write_desc(DATA_DIR, verbose=args.verbose)
     prepare_client(args.verbose)
 
-    selected_flavors = EMPER_FLAVORS
-    if args.flavors:
-        filtered_flavors = {}
-        for selected_flavor in args.flavors:
-            filtered_flavors.update({
-                f: selected_flavors[f]
-                for f in fnmatch.filter(selected_flavors.keys(),
-                                        selected_flavor)
-            })
-
-        selected_flavors = filtered_flavors
-
     # generate emper flavors
     if 'emper' in SERVER_CMDS:
         prepare_emper_flavors(selected_flavors, args.verbose)