Qt no se basa ni utiliza excepciones. Usa valores de retorno para comprobar el resultado de una llamada.
Poniendo un ejemplo la clase QFile define los siguientes códigos de error:
enum FileError { NoError, ReadError, WriteError, FatalError, ..., CopyError }
Cada método de la clase tiene un valor de retorno que indica si ha habido error o ha sido un éxito.
Por ejemplo, bool QFile::open(...) devuelve true si se ha abierto correctamente y false si ha habido un error. Para comprobar el error simplemente hay que llamar a la funcion FileError QFile::error() y te indica la razón con detalle.
Es muy al estilo C puro, las llamadas open, etc. devuelven -1 y dejan en la variable errno la causa del fallo.
Luego hay casos en los que las llamadas son asíncronas y son ejecutadas por el hilo principal de Qt.
Para gestionar los errores de esas llamadas se utilizan "Signals and slots".
http://doc.trolltech.com/4.5/signalsandslots.htmlUn objeto que trabaja de forma asíncrona, por ejemplo es QAccessNetworkManager. Y tiene definidas una serie de señales que emite en diversas circunstancias para que las conectes a tus métodos y gestiones las diversas situaciones. QAccessNetworkManager emite estas señales dependiendo de como resulte la operación:
void authenticationRequired ( QNetworkReply * reply, QAuthenticator * authenticator )
void finished ( QNetworkReply * reply )
void proxyAuthenticationRequired ( const QNetworkProxy & proxy, QAuthenticator * authenticator )
void sslErrors ( QNetworkReply * reply, const QList<QSslError> & errors )
Personalmente no me gustan las excepciones y prefiero evaluar cada resultado de cada llamada por mi cuenta.
Aquí te dejo un hilo en el que la gente habla del tema:
http://lists.trolltech.com/qt-interest/ ... 054-0.htmlUn saludo.