Согласно книге “Глубины Инди”, которая есть на просторах Интернетов, мы можем сделать следующее…
При работе с клиентом
1 2 3 4 5 6 |
Client.Connect; try // Perform read/write here finally Client.Disconnect; end; |
Вот более развернутая версия, в которой мы отделяем ошибки Indy от всех остальных ошибок, например VCL ошибок.
1 2 3 |
... uses IdException ... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
try Client.Connect; try // Perform read/write here finally Client.Disconnect; end; except on E: EIdException do begin ShowMessage( 'Communication Exception: ' + E.Message); end else begin ShowMessage( 'VCL Exception: ' + E.Message); end; end; |
А вот так можно отделить ошибки подключения от остальных ошибок, а также ошибки Indy от всех остальных, например VCL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
try IdTCPClient1.Connect; try try // Do your communications here finally IdTCPClient1.Disconnect; end; except //Other exceptions on E: EIdException do begin ShowMessage( 'An network error occurred during communication: ' + E. Message); end; on E: Exception do begin ShowMessage( 'An unknown error occurred during communication: ' + E. Message); end; end; except // Catching Connection Exceptions on E: EIdException do begin ShowMessage( 'An network error occurred while trying to connect: ' + E. Message); end; on E: Exception do begin ShowMessage( 'An unknown error occurred while trying to connect: ' + E. Message); end; end; |