|
|
| version 1.65, 2002/09/04 14:59:54 | version 1.67, 2002/12/09 11:14:55 |
|---|---|
| Line 59 public: | Line 59 public: |
| one can simply 'throw' from dynamic library. | one can simply 'throw' from dynamic library. |
| [sad story: one can not longjump/throw due to some bug in gcc as of 3.2.1 version] | [sad story: one can not longjump/throw due to some bug in gcc as of 3.2.1 version] |
| */ | */ |
| virtual void _throw(const char *comment) { | virtual void _throw(const SQL_Exception& aexception) { |
| // converting SQL_exception to parser Exception | |
| // hiding passwords and addresses from accidental show [imagine user forgot @exception] | // hiding passwords and addresses from accidental show [imagine user forgot @exception] |
| #ifdef PA_WITH_SJLJ_EXCEPTIONS | #ifdef PA_WITH_SJLJ_EXCEPTIONS |
| throw | throw |
| #else | #else |
| e= | fexception= |
| #endif | #endif |
| Exception("sql.connect", | Exception(aexception.ftype, |
| &url_without_login(pool(), furl), | aexception.fproblem_source?static_cast<const String*>(aexception.fproblem_source) |
| comment); | :&url_without_login(pool(), furl), |
| aexception.fcomment); | |
| #ifndef PA_WITH_SJLJ_EXCEPTIONS | #ifndef PA_WITH_SJLJ_EXCEPTIONS |
| longjmp(mark, 1); | longjmp(mark, 1); |
| Line 76 public: | Line 78 public: |
| } | } |
| virtual void propagate_exception() { | virtual void propagate_exception() { |
| #ifndef PA_WITH_SJLJ_EXCEPTIONS | #ifndef PA_WITH_SJLJ_EXCEPTIONS |
| throw e; | throw fexception; |
| #endif | #endif |
| } | } |
| private: | private: |
| const String& furl; | const String& furl; |
| Exception e; | Exception fexception; |
| }; | }; |
| // helpers | // helpers |