Показать сообщение отдельно
Старый 12.07.2009, 13:26   #1  
rDenis is offline
rDenis
Участник
 
6 / 11 (1) +
Регистрация: 21.03.2009
BinData oбработка исключений / catch exception, AX 4
Добрый день,

Есть код:

X++:
BinData         tmpBinData = new BinData();
str                 text;
;

tmpBinData.setAsciiData(text);
Если подаётся text с символом вне Windows-1252(ANSI) кидается ошибка:
Error:Invalid character in ASCII string. All characters must be >= 0 and <= 255.

Ошибку надо поймать, и вместо неё отобразить нужную для пользователя информацию.

X++:
 try
    {
        tmpBinData.setAsciiData(text);
    }
    catch
    {
        throw error("");
    }
Не ловит её.
Второй параметр _codePage = 65001 к setAsciiData() не подходит, так как ошибка должна быть.

Единственное что пока придумал, сделать так:
X++:
TextBuffer      tb = new TextBuffer();
    int             i;
    int             charIntValue;
    char            char;
    ;

    tb.appendText(text);
    for(i=0; i< tb.size(); i++)
    {
        char = tb.subStr(i, 1);
        charIntValue = System.Convert::ToInt16(System.Convert::ToChar(char));
        if(charIntValue < 0 || charIntValue > 255)
        throw error("");

    }

tmpBinData.setAsciiData(text):

Вопрос такой, можно ли как то отловить это исключение, в момент его появления используя try/catch. Или может возможно решить эту проблему менее громоздким способом.