DataTransferKit - Multiphysics Solution Transfer Services  2.0
DTK_DBC.cpp
Go to the documentation of this file.
1 //---------------------------------------------------------------------------//
2 /*
3  Copyright (c) 2012, Stuart R. Slattery
4  All rights reserved.
5 
6  Redistribution and use in source and binary forms, with or without
7  modification, are permitted provided that the following conditions are
8  met:
9 
10  *: Redistributions of source code must retain the above copyright
11  notice, this list of conditions and the following disclaimer.
12 
13  *: Redistributions in binary form must reproduce the above copyright
14  notice, this list of conditions and the following disclaimer in the
15  documentation and/or other materials provided with the distribution.
16 
17  *: Neither the name of the University of Wisconsin - Madison nor the
18  names of its contributors may be used to endorse or promote products
19  derived from this software without specific prior written permission.
20 
21  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25  HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33 //---------------------------------------------------------------------------//
39 //---------------------------------------------------------------------------//
40 
41 #include <sstream>
42 
43 #include "DTK_DBC.hpp"
44 
45 #include <Teuchos_stacktrace.hpp>
46 
47 namespace DataTransferKit
48 {
49 //---------------------------------------------------------------------------//
50 // Assertion functions.
51 //---------------------------------------------------------------------------//
64 std::string DataTransferKitException::generate_output( const std::string &cond,
65  const std::string &file,
66  const int line ) const
67 {
68  std::ostringstream output;
69  output << "DataTransferKit DataTransferKitException: " << cond
70  << ", failed in " << file << ", line " << line << "." << std::endl;
71  return output.str();
72 }
73 
74 //---------------------------------------------------------------------------//
75 // Throw functions.
76 //---------------------------------------------------------------------------//
87 void throwDataTransferKitException( const std::string &cond,
88  const std::string &file, const int line )
89 {
90 #ifdef HAVE_TEUCHOS_STACKTRACE
91  // If Teuchos stacktrace is turned on, store the stack before we throw so
92  // we can get it later.
93  Teuchos::store_stacktrace();
94 #endif
95  throw DataTransferKitException( cond, file, line );
96 }
97 
98 //---------------------------------------------------------------------------//
112 void errorCodeFailure( const std::string &cond, const std::string &file,
113  const int line, const int error_code )
114 {
115 #ifdef HAVE_TEUCHOS_STACKTRACE
116  // If Teuchos stacktrace is turned on, store the stack before we throw so
117  // we can get it later.
118  Teuchos::store_stacktrace();
119 #endif
120  std::ostringstream output_msg;
121  output_msg << "Error code : " << cond << ", failed in " << file << ":"
122  << line << std::endl
123  << "with error code:" << std::endl
124  << "\"" << error_code << "\"" << std::endl;
125  throw DataTransferKitException( output_msg.str() );
126 }
127 
128 //---------------------------------------------------------------------------//
129 
130 } // end namespace DataTransferKit
131 
132 //---------------------------------------------------------------------------//
133 // end DTK_DBC.cpp
134 //---------------------------------------------------------------------------//
DataTransferKitException(const std::string &msg)
Default constructor.
Definition: DTK_DBC.hpp:67
void throwDataTransferKitException(const std::string &cond, const std::string &file, const int line)
Throw a DataTransferKit::DataTransferKitException.
Definition: DTK_DBC.cpp:87
Assertions and Design-by-Contract for error handling.
DTK_BasicEntitySet.cpp.
void errorCodeFailure(const std::string &cond, const std::string &file, const int line, const int error_code)
Throw a DataTransferKit::DataTransferKitException when an error code fails.
Definition: DTK_DBC.cpp:112