Yes, in FileTransferClient class you will always get SftpException when using SFTP protocol, and FtpException when using FTP protocol.
No, Status == ProtocolError will be set only in cases a protocol error appears e.g. "File not found" or "Access denied" etc.
For socket exceptions you should get Status == SocketError.