diff --git a/parser.go b/parser.go
index 91b62e9..2290941 100644
--- a/parser.go
+++ b/parser.go
@@ -47,6 +47,9 @@
 	// overridden to perform certain actions (such as applying global flags)
 	// just before the command is executed. Note that if you override the
 	// handler it is your responsibility to call the command.Execute function.
+	//
+	// The command passed into CommandHandler may be nil in case there is no
+	// command to be executed when parsing has finished.
 	CommandHandler func(command Commander, args []string) error
 
 	internalError error
@@ -310,6 +313,8 @@
 		} else {
 			reterr = cmd.Execute(s.retargs)
 		}
+	} else if p.CommandHandler != nil {
+		reterr = p.CommandHandler(nil, s.retargs)
 	}
 
 	if reterr != nil {
diff --git a/parser_test.go b/parser_test.go
index a354946..4f3b31c 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -507,6 +507,45 @@
 	return nil
 }
 
+func TestCommandHandlerNoCommand(t *testing.T) {
+	var opts = struct {
+		Value bool `short:"v"`
+	}{}
+
+	parser := NewParser(&opts, Default&^PrintErrors)
+
+	var executedCommand Commander
+	var executedArgs []string
+
+	executed := false
+
+	parser.CommandHandler = func (command Commander, args []string) error {
+		executed = true
+
+		executedCommand = command
+		executedArgs = args
+
+		return nil
+	}
+
+	_, err := parser.ParseArgs([]string{"arg1", "arg2"})
+
+	if err != nil {
+		t.Fatalf("Unexpected parse error: %s", err)
+	}
+
+	if !executed {
+		t.Errorf("Expected command handler to be executed")
+	}
+
+	if executedCommand != nil {
+		t.Errorf("Did not exect an executed command")
+	}
+
+	assertStringArray(t, executedArgs, []string{"arg1", "arg2"})
+}
+
+
 func TestCommandHandler(t *testing.T) {
 	var opts = struct {
 		Value bool `short:"v"`
@@ -519,7 +558,11 @@
 	var executedCommand Commander
 	var executedArgs []string
 
+	executed := false
+
 	parser.CommandHandler = func (command Commander, args []string) error {
+		executed = true
+
 		executedCommand = command
 		executedArgs = args
 
@@ -532,6 +575,10 @@
 		t.Fatalf("Unexpected parse error: %s", err)
 	}
 
+	if !executed {
+		t.Errorf("Expected command handler to be executed")
+	}
+
 	if executedCommand == nil {
 		t.Errorf("Expected command handler to be executed")
 	}
