[解決済み] std::exceptionを継承すべきですか?
2022-11-26 21:39:03
質問
少なくともひとつの信頼できる情報源(私が受けたC++のクラス)が、C++のアプリケーション固有の例外クラスは、std::exception
. 私はこのアプローチの利点について明確ではありません。
C#の場合、継承する理由は
ApplicationException
を継承する理由は明確です。便利なメソッド、プロパティ、コンストラクタが用意されており、必要なものを追加またはオーバーライドすればよいからです。しかし
std::exception
では、得られるのは
what()
メソッドをオーバーライドするだけで、 自分で作ったのと同じようなものです。
では、もしメリットがあるとすれば
std::exception
をアプリケーション固有の例外クラスの基底クラスとして使用する利点は何でしょうか?を継承しない正当な理由はあるのでしょうか?
std::exception
?
どのように解決するのですか?
主な利点は、あなたのクラスを使用するコードが、あなたのクラスがどのようなものであるかを知る必要がないことです。
throw
の型を知る必要がなく、ただ
catch
は
std::exception
.
編集する。
Martinや他の人が指摘したように、実際には、以下のサブクラスのいずれかを派生させたいのです。
std::exception
で宣言されている
<stdexcept>
ヘッダで宣言されています。
関連
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] static_cast, dynamic_cast, const_cast, reinterpret_cast はいつ使うべきですか?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] C++で仮想関数が必要な理由とは?
-
[解決済み] Pythonの関数が例外を投げるかどうかをテストするにはどうすればよいですか?
-
[解決済み] Rubyで「例外 => e」を救済するのはなぜ悪いスタイルなのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み] std::runtime_error と std::exception() の違い。