ctkPluginDatabaseException.cpp

Go to the documentation of this file.
00001 /*=============================================================================
00002 
00003   Library: CTK
00004 
00005   Copyright (c) 2010 German Cancer Research Center,
00006     Division of Medical and Biological Informatics
00007 
00008   Licensed under the Apache License, Version 2.0 (the "License");
00009   you may not use this file except in compliance with the License.
00010   You may obtain a copy of the License at
00011 
00012     http://www.apache.org/licenses/LICENSE-2.0
00013 
00014   Unless required by applicable law or agreed to in writing, software
00015   distributed under the License is distributed on an "AS IS" BASIS,
00016   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00017   See the License for the specific language governing permissions and
00018   limitations under the License.
00019 
00020 =============================================================================*/
00021 
00022 #include "ctkPluginDatabaseException.h"
00023 
00024 #include <QDebug>
00025 
00026 
00027 ctkPluginDatabaseException::ctkPluginDatabaseException(const QString& msg, const Type& type, const std::exception& cause)
00028   : std::runtime_error(msg.toStdString()),
00029     type(type), cause(cause)
00030 {
00031 
00032 }
00033 
00034 ctkPluginDatabaseException::ctkPluginDatabaseException(const QString& msg, const std::exception& cause)
00035   : std::runtime_error(msg.toStdString()),
00036     type(UNSPECIFIED), cause(cause)
00037 {
00038 
00039 }
00040 
00041 ctkPluginDatabaseException::ctkPluginDatabaseException(const ctkPluginDatabaseException& o)
00042   : std::runtime_error(o.what()),
00043     type(o.type), cause(o.cause)
00044 {
00045 
00046 }
00047 
00048 ctkPluginDatabaseException& ctkPluginDatabaseException::operator=(const ctkPluginDatabaseException& o)
00049 {
00050   std::runtime_error::operator=(o);
00051   type = o.type;
00052   cause = o.cause;
00053   return *this;
00054 }
00055 
00056 std::exception ctkPluginDatabaseException::getCause() const
00057 {
00058   return cause;
00059 }
00060 
00061 void ctkPluginDatabaseException::setCause(const std::exception& cause) throw(std::logic_error)
00062 {
00063   if (!cause.what()) throw std::logic_error("The cause for this ctkPluginDatabaseException instance is already set");
00064 
00065   this->cause = cause;
00066 }
00067 
00068 ctkPluginDatabaseException::Type ctkPluginDatabaseException::getType() const
00069 {
00070   return type;
00071 }
00072 
00073 
00074 QDebug operator<<(QDebug dbg, const ctkPluginDatabaseException& exc)
00075 {
00076   dbg << "ctkPluginDatabaseException:" << exc.what();
00077 
00078   const char* causeMsg = exc.getCause().what();
00079   if (causeMsg) dbg << "  Caused by:" << causeMsg;
00080 
00081   return dbg.maybeSpace();
00082 }
00083 
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines