Example #1
0
void CExceptionReporter::ReportDefaultEx(int err_code, int err_subcode,
    const CDiagCompileInfo& info, const string& title,const exception& ex,
    TDiagPostFlags flags)
{
    if ( !sm_DefEnabled )
        return;

    const CException* cex = dynamic_cast<const CException*>(&ex);
    auto_ptr<CException> wrapper;
    if ( !cex ) {
        wrapper.reset(new CExceptionWrapper(info, ex));
        cex = wrapper.get();
    }
    if ( sm_DefHandler ) {
        sm_DefHandler->Report(info.GetFile(),
                              info.GetLine(),
                              title,
                              *cex,
                              flags);
    } else {
        CNcbiDiag d(info, cex->GetSeverity(), flags);
        d << ErrCode(err_code, err_subcode);
        if ((err_code==0 && err_subcode==0) || d.CheckFilters()) {
            d << title << *cex;
        } else {
            Reset(d);
        }
    }
}
Example #2
0
void CObjectOStream::ThrowError1(const CDiagCompileInfo& diag_info, 
                                 TFailFlags fail, const string& message,
                                 CException* exc)
{
    CSerialException::EErrCode err;
    try {
        DefaultFlush();
    } catch(...) {
    }
    string msg(message);
    if (fail == fUnassigned) {
        msg = "cannot write unassigned member "+message;
    }
    SetFailFlags(fail, msg.c_str());
    msg.insert(0,GetPosition()+": ");
    switch(fail)
    {
    case fNoError:
        CNcbiDiag(diag_info, eDiag_Trace) << ErrCode(NCBI_ERRCODE_X, 12)
                                          << message;
        return;
//    case fEOF:         err = CSerialException::eEOF;         break;
    default:
    case fWriteError:     err = CSerialException::eIoError;        break;
//    case fFormatError: err = CSerialException::eFormatError; break;
    case fOverflow:       err = CSerialException::eOverflow;       break;
    case fInvalidData:    err = CSerialException::eInvalidData;    break;
    case fIllegalCall:    err = CSerialException::eIllegalCall;    break;
    case fFail:           err = CSerialException::eFail;           break;
    case fNotOpen:        err = CSerialException::eNotOpen;        break;
    case fNotImplemented: err = CSerialException::eNotImplemented; break;
    case fUnassigned:
        throw CUnassignedMember(diag_info,exc,CUnassignedMember::eWrite, msg);
    }
    throw CSerialException(diag_info,exc,err,msg);
}
Example #3
0
 int FindExe (char const * filePath, char * exePath)
 {
     HINSTANCE hInst = ::FindExecutable (filePath, 0, exePath);
     return ErrCode (hInst);
 }