про вылет обработки исключения ничего не скажу, а вот саму задачу решить гораздо проще.
процедура
Val(S; var V; var Code: Integer);
помещает целое или дробное число, модержащееся в S в переменную V, если S — число.
в Code помещается код ошибки, какие конкретно значения не помню, поэксперементируй
т.е. если S не число, прога не вылетает как в StrToInt, а просто помещает в Code некоторый код ошибки.