[解決済み】関数のシグネチャでthrowキーワードを使用する場合
2022-04-08 15:29:10
質問
C++を使用することがバッドプラクティスであると考えられている技術的な理由は何ですか?
throw
キーワードを関数シグネチャに使用することはできますか?
bool some_func() throw(myExc)
{
...
if (problem_occurred)
{
throw myExc("problem occurred");
}
...
}
解決方法は?
いいえ、それは良い習慣とはみなされていません。それどころか、一般的には悪いことだと考えられています。
http://www.gotw.ca/publications/mill22.htm にはその理由が詳しく書かれていますが、問題は、コンパイラがこれを強制できないので、実行時にチェックしなければならないことです。また、どのような場合でもサポートが十分ではありません。(MSVCは例外の指定を無視します。throw()を除いて、例外が投げられないことを保証していると解釈しています。
関連
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み] 投げる」と「投げる元」は違うのですか?
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] template "と "typename "キーワードはどこに、なぜ入れなければならないのですか?
-
[解決済み] CとC++でmain()は何を返すべきですか?
-
[解決済み] noexceptを本当に使うべきはいつですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】C++ 構造体の初期化
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++