Когда на стороне сервера возникает исключение, то для его доставки клиенту должны быть две вещи:
- тип исключения должен быть получен из
TException
- вызов функции в IDL должен включать тип исключения
Если первая точка не удовлетворена, то в большинстве случаев вы получите общий c TApplicationException
на клиенте, иначе соединение может просто отключиться (в библиотеках есть некоторые различия в реализации, это происходит в процессе консолидации).
Если второй пункт не выполняется Предполагается, что вы генерируете правильно выведенное исключение, поэтому не будет сгенерированного кода для его сериализации или десериализации. Следовательно, вы в основном получаете тот же результат, что и выше, но по другой причине.
Из документов, связанных выше:
Functions
[21] Function ::= 'oneway'? FunctionType Identifier '(' Field* ')' Throws? ListSeparator?
[22] FunctionType ::= FieldType | 'void'
[23] Throws ::= 'throws' '(' Field* ')'