2017-09-09 2 views
1

ケースで私のコードのクライアントにエラーを表示する方法はありますか?ここでこの場合、エラーを表示します。 C++

は誰かによって使用される機能です。

double firstTaskSum(int n, double x) 
{ 
    if(n < 0) 
    { 
     cout << ("n is invalid! n : " + std::to_string(n) + ". And must be n >= 0."); 
     return; 
    } 

    if(x == 0) 
    { 
     cout << ("x is invalid! 0 to power of 0 is undefined."); 
     return; 
    } 

    return firstTaskSumUp(0, n, x, 1, 1); 
} 

私はそれが何も返さないので、それをコンパイルしようとすると、それはエラーになります。どうすれば周りに行くことができますか?私は偽の変数を返すのは好きではないでしょう。なぜなら、それらは入力のための実際の出力かもしれないからです。

、このようなコードを使用して: enter image description here

そして、私は停止しないプログラムのコンソールと流れにうまく出力されるようにエラーをしたいと思います。ここでは

double firstTaskSum(int n, double x) 
{ 
    if(n < 0) 
    {throw invalid_argument("n is invalid! n : " + std::to_string(n) + ". And must be n >= 0.");} 

    if(x == 0) 
    {throw invalid_argument("x is invalid! 0 to power of 0 is undefined.");} 

    return firstTaskSumUp(0, n, x, 1, 1); 
} 

は私が得るものです。

+1

例外をスローして上位レベルで処理します。 – myaut

答えて

1

あなたが例外をスローできます。例外をスロー横に

#include <stdexcept> 
using namespace std; 

double firstTaskSum(int n, double x) 
{ 
    if (n < 0) 
    { 
     throw invalid_argument("n must be positive"); 
    } 

    if (x == 0) 
    { 
     throw invalid_argument("x can't be 0"); 
    } 

    return firstTaskSumUp(0, n, x, 1, 1); 
} 
+0

'invalid_argument'例外をキャッチする方法はありますか?例えば、私は 'catch(const char * msg)'を使ってプレーンテキストをキャッチできることを知っています。 –

+0

@ catchtの 'catch'のパラメータは' catch(const invalid_argument&e) '型です。 – Mureinik

+0

そして、 'invalid_argument'にパラメータとして渡されたメッセージをどのように出力できますか? –

0

別のオプションは、引数の妥当性のための機能チェックを持つことです。

if (IsArgumentValid(1, 1)) 
    firstTaskSum(1, 1); 
else 
    cout << "Invalid arguments\n"; 
関連する問題