次のコードは、g ++バージョン5.1.0で正常にコンパイルされます。対応するtry
のないcatch
は、メンバー関数foo::bar()
にあります。私はこの構文が合法であったかどうか疑問に思っていました。もともとCatch block in constructor without tryキャッチせずにキャッチを成功
答えて
あなたが与える例で見
struct foo
{
void bar()
{
}
catch (...)
{
}
};
int main()
{
foo f;
f.bar();
return 0;
}
、
struct foo
{
void bar()
{
}
catch (...)
{
}
};
…有効な標準C++ではありません。
g ++言語の拡張機能である可能性があります。
あなたがtry
キーワードを必要とするも除いて、機能catchブロックのように見えるようにリンクされ問題になっているcatch
ES。
fwiw、 'g ++ -std = C++ 14 -Wall -Wextra -Wpedantic'で私のためにコンパイルします。私は愚かな独自の拡張子をすべて無効にします –
' g ++ 'は' bar () 'と' catch 'も文法エラーや警告を生成することなく、 'catch'は' try'なしで実際には何も捕捉しません、そして、そのスコープが前記「試行」によって囲まれている。私はこれが、 'catch 'が対応する関数スコープ' try'を必要としない構文解析の抜け穴であると推測しています。 –
他の人がすぐに指摘してくれたように、引用符で囲まれたコードは整形式ではありません。C++。最近のGCC 4/5/6ブランチで使われていた、書き直されたC++パーサーの見落としのために許可されました。
私はこれをGCC Bug/PR c++/71909として提出しました。そこに見られるように、機能ブロックtry
ブロックがすでに発生している場合にのみ、機能ブロックcatch
がブロックされることを確実にするために、すべての3つのブランチに対してコミットが行われました。 3日のターンアラウンド、それはかなり良い:-)
のおかげで、これをもたらすためのリチャード!
かなり速いtbhです。 –
- 1. Javaは「試しせずにキャッチ」
- 2. キャッチ/成功に拒否/解決を追加する
- 3. キャッチはエラーをキャッチできません
- 4. 角度はサービスからの成功のエラーをキャッチ
- 5. CloneNotSupportedExceptionをキャッチせずにクローンメソッドを使用する
- 6. jquerymobile:どのようにajaxの読み込み成功をキャッチするには
- 7. Liferayはポートレットのフォームをキャッチせず、処理しません
- 8. ストライプ転送のエラーと成功をどのようにキャッチしますか?
- 9. キャッチ
- 10. キャッチ:
- 11. SelectedIndexChangedをキャッチしません
- 12. SpringキャッチBean作成例外
- 13. 内部キャッチでキャッチされた例外をネストされたtryキャッチの外部キャッチに渡す方法
- 14. ループ中にキャッチ
- 15. データベースにシリアルポートストリームをキャッチ
- 16. キャッチDatabaseError
- 17. キャッチYAML
- 18. キャッチMailException
- 19. キャッチ22
- 20. キャッチViewPager
- 21. エラーをキャッチせずに文字列をUTF-8に変換する方法
- 22. Javaエラーをキャッチ
- 23. IMEアクションをキャッチ
- 24. "Tclインタプリタエラー"をキャッチ
- 25. アプリケーションクラッシュイベントをキャッチ
- 26. webhook node.jsをキャッチ
- 27. ページを壊さずにすべてのページレベルのエラーをキャッチ
- 28. フォームの作成をキャッチしよう
- 29. WM_DEVICECHANGEにキャッチする
- 30. タイプサブスクリプションにキャッチが存在しません
Er ...私が本当にあなたがここに求めているものは、あなたがリンクしている元の質問への答えにはまだ含まれていないでしょう。 – hvd
@hvdオリジナルの質問には私には見えないコメントしかありません。また、構文が対応する 'try'なしで' catch 'を許可する理由についての議論や答えはありません。 –
はい、「未」は未来を指します。質問はまだ答えられていません。私はあなたがここで尋ねていることも含めないで、その質問がどのように答えることができないのか分かりません。 – hvd