--- parser3/src/main/pa_exception.C 2001/10/19 12:43:30 1.19 +++ parser3/src/main/pa_exception.C 2001/11/05 11:46:28 1.24 @@ -2,14 +2,18 @@ Parser: exception class. Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) - Author: Alexander Petrosyan (http://design.ru/paf) + Author: Alexander Petrosyan (http://paf.design.ru) - $Id: pa_exception.C,v 1.19 2001/10/19 12:43:30 parser Exp $ + $Id: pa_exception.C,v 1.24 2001/11/05 11:46:28 paf Exp $ */ #include "pa_common.h" #include "pa_exception.h" +Exception::Exception() { + ftype=fcode=fproblem_source=0; + fcomment=0; +} Exception::Exception(const String *atype, const String *acode, const String *aproblem_source, const char *comment_fmt, ...) { @@ -21,23 +25,24 @@ Exception::Exception(const String *atype if(comment_fmt) { va_list args; va_start(args, comment_fmt); + fcomment=(char *)malloc(MAX_STRING); vsnprintf(fcomment, MAX_STRING, comment_fmt, args); va_end(args); } else - fcomment[0]=0; + fcomment=0; } #ifdef XML -void Exception::_throw(Pool& pool, const String *source, const XSLException& e) { +void Exception::provide_source(Pool& pool, const String *source, const XSLException& e) { if(e.getURI().empty()) - _throw(0, 0, + throw Exception(0, 0, source, "%s (%s)", pool.transcode_cstr(e.getMessage()), // message for exception pool.transcode_cstr(e.getType()) // type of exception ); else - _throw(0, 0, + throw Exception(0, 0, source, "%s (%s). %s(%d:%d)'", pool.transcode_cstr(e.getMessage()), // message for exception @@ -49,15 +54,15 @@ void Exception::_throw(Pool& pool, const ); } -void Exception::_throw(Pool& pool, const String *source, const SAXException& e) { - _throw(0, 0, +void Exception::provide_source(Pool& pool, const String *source, const SAXException& e) { + throw Exception(0, 0, source, "%s", pool.transcode_cstr(XalanDOMString(e.getMessage())) // message for exception ); } -void Exception::_throw(Pool& pool, const String *source, const SAXParseException& e) { - _throw(0, 0, +void Exception::provide_source(Pool& pool, const String *source, const SAXParseException& e) { + throw Exception(0, 0, source, "%s. %s(%d:%d)", pool.transcode_cstr(XalanDOMString(e.getMessage())), // message for exception @@ -67,12 +72,12 @@ void Exception::_throw(Pool& pool, const } -void Exception::_throw(Pool& pool, const String *source, const XMLException& e) { - _throw(0, 0, +void Exception::provide_source(Pool& pool, const String *source, const XMLException& e) { + throw Exception(0, 0, source, "%s (%s). %s(%d)'", pool.transcode_cstr(XalanDOMString(e.getMessage())), // message for exception - pool.transcode_cstr(XalanDOMString((e.getType()))), // type of exception + pool.transcode_cstr(XalanDOMString(e.getType())), // type of exception e.getSrcFile()?e.getSrcFile():"block", // file of exception e.getSrcLine() // line number @@ -80,7 +85,7 @@ void Exception::_throw(Pool& pool, const ); } -void Exception::_throw(Pool& pool, const String *source, const XalanDOMException& e) { +void Exception::provide_source(Pool& pool, const String *source, const XalanDOMException& e) { const char *s; int code=(int)e.getExceptionCode(); switch(code) { @@ -103,7 +108,7 @@ void Exception::_throw(Pool& pool, const case 202: s="TRANSCODING_ERR"; break; default: s=""; break; } - _throw(0, 0, + throw Exception(0, 0, source, "XalanDOMException %s (%d)", s, // decoded code of exception