2017-09-09 1 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

'catch'의 매개 변수는'catch (const invalid_argument & e)'형식입니다. – Mureinik

+0

그리고'invalid_argument'에 매개 변수로 전달 된 메시지를 어떻게 출력 할 수 있습니까? –

0

예외를 던지는 옆에 또 다른 옵션은 인수 타당성에 대한 기능 검사를하는 것입니다.

if (IsArgumentValid(1, 1)) 
    firstTaskSum(1, 1); 
else 
    cout << "Invalid arguments\n"; 
관련 문제