Commit 0bf2bc29 authored by Lucian Grijincu's avatar Lucian Grijincu Committed by Facebook Github Bot

folly: ExceptionWrapper: remove <iostream> from header

Summary: #accept2ship

Reviewed By: yfeldblum

Differential Revision: D4192095

fbshipit-source-id: eb0cad875bcc24d1c87a99890c51aea31f7024c9
parent 4e42eb8b
/*
* Copyright 2016 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <folly/ExceptionWrapper.h>
#include <exception>
#include <iostream>
namespace folly {
[[noreturn]] void exception_wrapper::throwException() const {
if (throwfn_) {
throwfn_(item_.get());
} else if (eptr_) {
std::rethrow_exception(eptr_);
}
std::cerr
<< "Cannot use `throwException` with an empty folly::exception_wrapper"
<< std::endl;
std::terminate();
}
fbstring exception_wrapper::class_name() const {
if (item_) {
auto& i = *item_;
return demangle(typeid(i));
} else if (eptr_) {
return ename_;
} else {
return fbstring();
}
}
fbstring exception_wrapper::what() const {
if (item_) {
return exceptionStr(*item_);
} else if (eptr_) {
return estr_;
} else {
return fbstring();
}
}
fbstring exceptionStr(const exception_wrapper& ew) {
return ew.what();
}
} // folly
......@@ -16,11 +16,14 @@
#pragma once
#include <cassert>
#include <exception>
#include <iostream>
#include <memory>
#include <string>
#include <type_traits>
#include <utility>
#include <folly/ExceptionString.h>
#include <folly/FBString.h>
#include <folly/detail/ExceptionWrapper.h>
namespace folly {
......@@ -151,17 +154,7 @@ class exception_wrapper {
// If the exception_wrapper does not contain an exception, std::terminate()
// is invoked to assure the [[noreturn]] behaviour.
[[noreturn]] void throwException() const {
if (throwfn_) {
throwfn_(item_.get());
} else if (eptr_) {
std::rethrow_exception(eptr_);
}
std::cerr
<< "Cannot use `throwException` with an empty folly::exception_wrapper"
<< std::endl;
std::terminate();
}
[[noreturn]] void throwException() const;
explicit operator bool() const {
return item_ || eptr_;
......@@ -191,26 +184,8 @@ class exception_wrapper {
std::exception* getCopied() { return item_.get(); }
const std::exception* getCopied() const { return item_.get(); }
fbstring what() const {
if (item_) {
return exceptionStr(*item_);
} else if (eptr_) {
return estr_;
} else {
return fbstring();
}
}
fbstring class_name() const {
if (item_) {
auto& i = *item_;
return demangle(typeid(i));
} else if (eptr_) {
return ename_;
} else {
return fbstring();
}
}
fbstring what() const;
fbstring class_name() const;
template <class Ex>
bool is_compatible_with() const {
......@@ -378,9 +353,7 @@ exception_wrapper make_exception_wrapper(Args&&... args) {
}
// For consistency with exceptionStr() functions in String.h
inline fbstring exceptionStr(const exception_wrapper& ew) {
return ew.what();
}
fbstring exceptionStr(const exception_wrapper& ew);
/*
* try_and_catch is a simple replacement for try {} catch(){} that allows you to
......@@ -477,4 +450,5 @@ class try_and_catch<> : public exception_wrapper {
fn();
}
};
}
} // folly
......@@ -409,6 +409,7 @@ libfolly_la_SOURCES = \
detail/CacheLocality.cpp \
detail/IPAddress.cpp \
dynamic.cpp \
ExceptionWrapper.cpp \
File.cpp \
FileUtil.cpp \
FingerprintTables.cpp \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment