2012-03-14 9 views
0

例外をスローするクラスを作成するときに、そのクラス内の例外を処理することをお勧めしますか?または、クラスのユーザーにメインプログラムでそれを処理させる方が良いでしょうか?クラスの作成時の例外処理のプラクティス

たとえば、次のようなクラスを書くのは良い考えですか?

class Queue{ 
    Object Queue<Object>::getFront() 
    { 
     try 
     { 
      if(isEmpty()) 
       throw Underflow(); 
     } catch(Underflow E) 
     { 
      cerr<<"caught underflow\n"; 
      return null; 
     } 
     return queuearray[ front ]; 
    } 
} 

かは、それだけで

Object Queue<Object>::getFront() 
{ 
    if(isEmpty()) 
     throw Underflow(); 
    return queuearray[ front ];   
} 

を持っているし、ユーザーがメインまたは機能が がどこに呼び出されている中に例外を実装できるように良いですか?

+0

なぜあなたはそれをしますか? – SLaks

+0

どちらがあなたについて話していますか?最初か二番目? – mma1480

+0

最初です。これは単純な「if」よりも優れていません。 – SLaks

答えて

0

例外を処理するのが最適な場所によって異なります。例外が回復可能で、プログラムの流れに影響を与えない場合は、静かに処理してログに記録することができます。呼び出し元が何をすべきかをより適切に判断できると思われる場合は、例外をスローします。

状況が本当に例外的な場合(アプリケーションのコントロール外のもの)のみ例外を使用してください。上記の例は本当に理想的ではありません。あなたが例外を投げているなら、なぜ下の行にそれをキャッチしていますか?ちょうど

class Queue{ 
Object Queue<Object>::getFront() 
{ 
    try 
    { 
     if(isEmpty()) 
      return null; 
    } 
    return queuearray[ front ]; 
    } 
} 
} 
+0

ありがとうございました。 if文を使用することができれば、例外をスローして処理するのが理想的です。それは、それが必要以上に複雑になるようです。 – mma1480