hi....
i'm using qt 4.4.0.
I want to know which Qt class to use to raise exception in try...catch block.
Can anyone give me sample code of exception handling.
hi....
i'm using qt 4.4.0.
I want to know which Qt class to use to raise exception in try...catch block.
Can anyone give me sample code of exception handling.
Qt doesnt provide exception handling unless u r using Qt concurrent..which is when u use multiple threads
I want to display last sytsem error I got ..
do we hav anything for this in Qt???
I vc++ I used this function
Qt Code:
void GetErrorDescription() { // Retrieve the system error message for the last-error code LPVOID lpMsgBuf; DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); LocalFree(lpMsgBuf); }To copy to clipboard, switch view to plain text mode
but its not usefull in Qt .....
it wont be useful in Qt..if u wanna use that kind of call, use it in a non-Qt class,i.e not derived from QObject..of course u can call this class in ur Qt class..just keep them seperate..then it'll run on windows..dont forget at the end of the day, Qt uses C++ compiler only
it is not so easy to catch exceptions in QT. mostly the exceptions are occuring due to segmentation faults, floating point exceptions etc....so we need to catch OS signals.
please check whether this is ok for u. Main part of the source added below.
#include <signal.h>
#include <setjmp.h>
#include <exception>
jmp_buf StackBuf;
// Macro for signal sending SIGSEGV/SIGFPE (more signals can be added)
#define SIG_INIT signal( SIGSEGV, TryCatchHandler::SignalHandler ); \
signal( SIGFPE, TryCatchHandler::SignalHandler );
// Macro for Try
#define TRY SIG_INIT try { if(( setjmp( StackBuf )) == 0)
{ // add ur code
// Macro for Catch
#define CATCH } else{ sigrelse( SIGSEGV ); sigrelse( SIGFPE ); \
throw new std::exception(); }} catch(...)
static void SignalHandler( int nSignal_i )
{
longjmp( StackBuf, nSignal_i );
}
Bookmarks