LSSTApplications
10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
home
lsstsw
stack
Linux64
pex_exceptions
10.0+46
include
lsst
pex
exceptions
Exception.h
Go to the documentation of this file.
1
// -*- LSST-C++ -*-
2
/*
3
* LSST Data Management System
4
* Copyright 2008-2014 LSST Corporation.
5
*
6
* This product includes software developed by the
7
* LSST Project (http://www.lsst.org/).
8
*
9
* This program is free software: you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation, either version 3 of the License, or
12
* (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*
19
* You should have received a copy of the LSST License Statement and
20
* the GNU General Public License along with this program. If not,
21
* see <http://www.lsstcorp.org/LegalNotices/>.
22
*/
23
24
#ifndef LSST_PEX_EXCEPTIONS_EXCEPTION_H
25
#define LSST_PEX_EXCEPTIONS_EXCEPTION_H
26
27
#include <exception>
28
#include <ostream>
29
#include <string>
30
#include <vector>
31
32
#include "boost/current_function.hpp"
33
34
namespace
lsst {
35
namespace
pex {
36
namespace
exceptions {
37
40
#define LSST_EXCEPT_HERE __FILE__, __LINE__, BOOST_CURRENT_FUNCTION
41
46
#define LSST_EXCEPT(type, ...) type(LSST_EXCEPT_HERE, __VA_ARGS__)
47
51
#define LSST_EXCEPT_ADD(e, m) e.addMessage(LSST_EXCEPT_HERE, m)
52
55
#define LSST_EARGS_TYPED \
56
char const* ex_file, int ex_line, char const* ex_func, \
57
std::string const& ex_message
58
61
#define LSST_EARGS_UNTYPED ex_file, ex_line, ex_func, ex_message
62
68
#define LSST_EXCEPTION_TYPE(t, b, c) \
69
class t : public b { \
70
public: \
71
t(LSST_EARGS_TYPED) : b(LSST_EARGS_UNTYPED) { }; \
72
t(std::string const & message) : b(message) { }; \
73
virtual char const* getType(void) const throw() { return #c " *"; }; \
74
virtual lsst::pex::exceptions::Exception* clone(void) const { \
75
return new t(*this); \
76
}; \
77
};
78
80
struct
Tracepoint
{
81
89
Tracepoint
(
char
const
*
file
,
int
line
,
char
const
* func,
90
std::string
const
& message);
91
92
char
const
*
_file
;
// Compiled strings only; does not need deletion
93
int
_line
;
94
char
const
*
_func
;
// Compiled strings only; does not need deletion
95
std::string
_message
;
96
};
97
typedef
std::vector<Tracepoint>
Traceback
;
98
99
class
Exception
:
public
std::exception {
100
public
:
101
109
Exception
(
char
const
*
file
,
int
line
,
char
const
* func,
110
std::string
const
& message);
// Should use LSST_EARGS_TYPED, but that confuses doxygen.
111
121
explicit
Exception
(std::string
const
& message);
122
123
virtual
~Exception
(
void
)
throw
();
124
132
void
addMessage
(
char
const
* file,
int
line,
char
const
* func,
133
std::string
const
& message);
134
136
Traceback
const
&
getTraceback
(
void
)
const
throw
();
137
144
virtual
std::ostream&
addToStream
(std::ostream& stream)
const
;
145
156
virtual
char
const
*
what
(
void
)
const
throw
();
157
164
virtual
char
const
*
getType
(
void
)
const
throw
();
165
171
virtual
Exception
*
clone
(
void
)
const
;
172
173
private
:
174
std::string
_message
;
175
Traceback
_traceback
;
176
};
177
183
std::ostream&
operator<<
(std::ostream& stream,
Exception
const
& e);
184
185
}}}
// namespace lsst::pex::exceptions
186
187
#endif
lsst::afw.display.ds9.line
def line
Definition:
ds9.py:88
lsst::pex.exceptions::Tracepoint::_message
std::string _message
Definition:
Exception.h:95
lsst::pex.exceptions::Exception::~Exception
virtual ~Exception(void)
Definition:
Exception.cc:53
lsst::pex.exceptions::Exception::getType
virtual char const * getType(void) const
Definition:
Exception.cc:116
lsst::pex.exceptions::Tracepoint::_line
int _line
Definition:
Exception.h:93
lsst::pex.exceptions::Exception
Definition:
Exception.h:99
lsst::pex.exceptions::Traceback
std::vector< Tracepoint > Traceback
Definition:
Exception.h:97
lsst::pex.exceptions::Exception::_traceback
Traceback _traceback
Definition:
Exception.h:175
lsst::pex.exceptions::Exception::addMessage
void addMessage(char const *file, int line, char const *func, std::string const &message)
Definition:
Exception.cc:55
lsst::pex.exceptions::Tracepoint::_file
char const * _file
Definition:
Exception.h:92
lsst::pex.exceptions::Exception::what
virtual char const * what(void) const
Definition:
Exception.cc:112
lsst::pex.exceptions::Exception::addToStream
virtual std::ostream & addToStream(std::ostream &stream) const
Definition:
Exception.cc:93
lsst::pex.exceptions::Exception::_message
std::string _message
Definition:
Exception.h:174
lsst::pex.exceptions::Tracepoint::Tracepoint
Tracepoint(char const *file, int line, char const *func, std::string const &message)
Definition:
Exception.cc:37
lsst::pex.exceptions::operator<<
std::ostream & operator<<(std::ostream &stream, Exception const &e)
Definition:
Exception.cc:124
lsst::pex.exceptions::Exception::Exception
Exception(char const *file, int line, char const *func, std::string const &message)
Definition:
Exception.cc:44
lsst::pex.exceptions::Exception::getTraceback
Traceback const & getTraceback(void) const
Retrieve the list of tracepoints associated with an exception.
Definition:
Exception.cc:89
lsstimport.file
file
Definition:
lsstimport.py:116
lsst::pex.exceptions::Tracepoint::_func
char const * _func
Definition:
Exception.h:94
lsst::pex.exceptions::Tracepoint
One point in the Traceback vector held by Exception.
Definition:
Exception.h:80
lsst::pex.exceptions::Exception::clone
virtual Exception * clone(void) const
Definition:
Exception.cc:120
Generated on Thu Sep 24 2015 02:29:23 for LSSTApplications by
1.8.5