The plus form of choice key has the syntax
\define@choicekey+[<pref>]{<fam>}{<key>}[<bin>]{<nominations>}[<default>]{<f1>}{<f2>}
When the user input is found in <nominations>, <f1> will be executed, otherwise <f2> will be called. The command \krddefinekeys of keyreader package hardwires <f2> to \krd@keyvalerr because in most cases the user would usually enter an error message in <f2>. pgfkeys will call /errors/unknown choice value={<key>}{<value>} in this case, which is equivalent to \krd@keyvalerr.
<f1> and <f2> are called "functions" in the xkeyval package, and "callbacks" in the keyreader package.
When you specify the key type choice, the command \krddefinekeys automatically and always uses the star (*) and plus (+) variant of \define@choicekey internally. So the choice key align in
\krddefinekeys*[KV]{ebox}[mp@]{%
choice/align/center/
center.do=\let\mp@alignright\hfil\let\mp@alignleft\hfil,
right.do=\let\mp@alignright\hfill\let\mp@alignleft\relax,
left.do=\let\mp@alignright\relax\let\mp@alignleft\hfill,
justified.do=\let\mp@alignright\relax\let\mp@alignleft\relax
}
is equivalent to the following code. This is what is executed internally in defining the key align.
\define@choicekey*+[KV]{ebox}[mp@]{align}[\krduserinput\krdorder]{%
center,right,left,justified
}[{center}]{%
\krd@executealt{#1}{<f1>}%
}{%
\krd@keyvalerr
}
The macro \krd@keyvalerr is defined as
\protected\def\krd@keyvalerr{%
\krd@getinnoval
\@latex@error{Erroneous value '\krd@ival' \MessageBreak for key or
option '\XKV@tkey'}{Invalid value for key '\XKV@tkey'.}%
}
where \krd@ival is the "innocent value" of the key. It is computed by \krd@getinnoval and is normally of length 20 "innocent" characters at most. \krd@keyvalerr is perhaps the "exception handler" that you refer to. If you like, you can redefine it, but be careful.
The example file of keyreader package:
\documentclass{standalone}
\usepackage{keyreader}
\usepackage{xcolor}
\makeatletter
\newdimen\shadowsize
\krddefinekeys*[KV]{ebox}[mp@]{%
bool/frame/true;
bool/shadow/true;
cmd/framecolor/black;
cmd/shadecolor/white;
cmd/shadowcolor/gray;
cmd/framesize/.4pt;
cmd/boxsize/.1\columnwidth;
cmd/shadowsize/1pt;
choice/align/center/
center.do=\let\mp@alignright\hfil\let\mp@alignleft\hfil,
right.do=\let\mp@alignright\hfill\let\mp@alignleft\relax,
left.do=\let\mp@alignright\relax\let\mp@alignleft\hfill,
justified.do=\let\mp@alignright\relax\let\mp@alignleft\relax
;
}
\savevaluekeys[KV]{ebox}{frame,framecolor,framesize}
\krdpresetkeys[KV]{ebox}{%
frame,framecolor=black,shadecolor=white,framesize=0.5pt,boxsize,align
}
\krdpostsetkeys[KV]{ebox}{%
shadow=\usevalue{frame},shadowcolor=\usevalue{framecolor}!40,
shadowsize=\usevalue{framesize}*4
}
\newcommand*\ebox[2][]{%
\krdsetkeys[KV]{ebox}{#1}%
\begingroup
\ifmp@frame
\fboxrule=\dimexpr\mp@framesize\relax
\else
\fboxrule=0pt
\fi
\ifmp@shadow
\shadowsize=\dimexpr\mp@shadowsize\relax
\else
\shadowsize=0pt
\fi
\setbox0=\hbox{%
\fcolorbox{\mp@framecolor}{\mp@shadecolor}{%
\hbox to\mp@boxsize{%
\mp@alignright #2\mp@alignleft
}%
}%
}%
\hskip\shadowsize
\color{\mp@shadowcolor}%
\rule[-\dp0]{\wd0}{\the\dimexpr\ht0+\dp0\relax}%
\llap{\raisebox{\shadowsize}{\box0\hskip\shadowsize}}%
\endgroup
}
\makeatother
\begin{document}
\ebox[shadecolor=brown]{ebox1}
\ebox[framecolor=magenta,boxsize=2cm,align=right]{ebox2}
\ebox[shadow=false,framesize=1pt,framecolor=red,boxsize=1.5cm,align=left]{ebox3}
\ebox[framesize=1pt,framecolor=green,shadowcolor=blue]{ebox4}
\ebox[frame=false,shadow,shadowcolor=yellow,framesize=.5pt]{ebox5}
\end{document}

I am submitting version 0.5 of keyreader to CTAN. The syntax for \krddefinekeys is extended to meet your need:
\krddefinekeys[<pref>]{<fam>}[<mp>]{
ord/<key>/<dft>/<f1>;
cmd/<key>/<dft>/<f1>;
bool/<key>/<dft>/<f1>;
bool+/<key>/<dft>/<f1>/<f2>;
choice/<key>/<dft>/<nominations>/<f1>;
choice+/<key>/<dft>/<nominations>/<f1>/<f2>;
}
Here <f2> is, hopefully, the "handler" you wanted. This is now in the package but you won't find it in the documentation yet.
Example:
\krddefinekeys*[KV]{fam}[mp@]{%
ord/keya/default-a/\def\x##1{#1*##1};
bool/keyb/true/;
bool+/keyc/true/\def\valueaccepted{#1}/\@latexerr{Invalid value '#1' for keyc}\@ehd;
cmd/keyd/black;
choice/keye/blue/green,blue,red,cyan/\def\emptycallback{};
choice+/keyf/center/
center.do=\let\mp@alignright\hfil\let\mp@alignleft\hfil,
right.do=\let\mp@alignright\hfill\let\mp@alignleft\relax,
left.do=\let\mp@alignright\relax\let\mp@alignleft\hfill,
justified.do=\let\mp@alignright\relax\let\mp@alignleft\relax
//
\let\mp@alignright\hfil\let\mp@alignleft\hfil
\@@warning{Invalid value for keyf; 'center' assumed}
;
}