Existe; é o mesmo que no bash, você faz uma função chamada command_not_found_handler
. Será passado todos os argumentos que foram dados no shell
$ foobar baz
zsh: command not found: foobar
$ function command_not_found_handler() {echo "You tried to run $1 with arg $2";}
$ foobar baz
You tried to run foobar with arg baz