Visual Servoing Platform version 3.5.0
vpException.cpp
1/****************************************************************************
2 *
3 * ViSP, open source Visual Servoing Platform software.
4 * Copyright (C) 2005 - 2019 by Inria. All rights reserved.
5 *
6 * This software is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 * See the file LICENSE.txt at the root directory of this source
11 * distribution for additional information about the GNU GPL.
12 *
13 * For using ViSP with software that can not be combined with the GNU
14 * GPL, please contact Inria about acquiring a ViSP Professional
15 * Edition License.
16 *
17 * See http://visp.inria.fr for more information.
18 *
19 * This software was developed at:
20 * Inria Rennes - Bretagne Atlantique
21 * Campus Universitaire de Beaulieu
22 * 35042 Rennes Cedex
23 * France
24 *
25 * If you have questions regarding the use of this file, please contact
26 * Inria at visp@inria.fr
27 *
28 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
29 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
30 *
31 * Description:
32 * Exception handling.
33 *
34 * Authors:
35 * Nicolas Mansard
36 *
37 *****************************************************************************/
38
39/* \file vpException.cpp
40 \brief error that can be emited by the vp class and its derivates
41 */
42
43#include "visp3/core/vpException.h"
44#include <stdio.h>
45
46/* -------------------------------------------------------------------------
47 */
48/* --- CONSTRUCTORS --------------------------------------------------------
49 */
50/* -------------------------------------------------------------------------
51 */
52vpException::vpException(int id) : code(id), message() {}
53
54vpException::vpException(int id, const std::string &msg) : code(id), message(msg) {}
55
56vpException::vpException(int id, const char *format, ...) : code(id), message()
57{
58 va_list args;
59 va_start(args, format);
60 setMessage(format, args);
61 va_end(args);
62}
63
64vpException::vpException(int id, const char *format, va_list args) : code(id), message()
65{
66 setMessage(format, args);
67}
68/* ------------------------------------------------------------------------ */
69/* --- DESTRUCTORS -------------------------------------------------------- */
70/* ------------------------------------------------------------------------ */
71
72/* Destructeur par default suffisant. */
73// vpException::
74// ~vpException (void)
75// {
76// }
77
78void vpException::setMessage(const char *format, va_list args)
79{
80 char buffer[1024];
81 vsnprintf(buffer, 1024, format, args);
82 std::string msg(buffer);
83 message = msg;
84}
85
86/* ------------------------------------------------------------------------ */
87/* --- ACCESSORS ---------------------------------------------------------- */
88/* ------------------------------------------------------------------------ */
89
90const char *vpException::getMessage() const { return (this->message).c_str(); }
91
92const std::string &vpException::getStringMessage() const { return this->message; }
93
94int vpException::getCode() const { return this->code; }
95
102const char *vpException::what() const throw() { return (this->message).c_str(); }
103
104/* -------------------------------------------------------------------------
105 */
106/* --- MODIFIORS -----------------------------------------------------------
107 */
108/* -------------------------------------------------------------------------
109 */
110
111/* -------------------------------------------------------------------------
112 */
113/* --- OP << ---------------------------------------------------------------
114 */
115/* -------------------------------------------------------------------------
116 */
117
118VISP_EXPORT std::ostream &operator<<(std::ostream &os, const vpException &error)
119{
120 os << "Error [" << error.code << "]:\t" << error.message << std::endl;
121
122 return os;
123}
124
125/*
126 * Local variables:
127 * c-basic-offset: 2
128 * End:
129 */
friend std::ostream & operator<<(std::ostream &s, const vpArray2D< Type > &A)
Definition: vpArray2D.h:493
error that can be emited by ViSP classes.
Definition: vpException.h:72
const std::string & getStringMessage() const
Send a reference (constant) related the error message (can be empty).
Definition: vpException.cpp:92
int code
Contains the error code, see the errorCodeEnum table for details.
Definition: vpException.h:75
vpException()
forbid the empty constructor (protected)
Definition: vpException.h:84
int getCode() const
Send the object code.
Definition: vpException.cpp:94
void setMessage(const char *format, va_list args)
Set the message container.
Definition: vpException.cpp:78
const char * getMessage() const
Definition: vpException.cpp:90
const char * what() const
std::string message
Contains an error message (can be empty)
Definition: vpException.h:78