2013-05-26 18 views
9

Która z poniższych opcji byłaby preferowana?Jaki jest preferowany sposób dołączania komunikatów o błędach do C++?

  1. Dołącz komunikat o błędzie w kodzie gdzie potrzebne:

    cout << "I am an error message!" <<endl; 
    exit(-1); 
    
  2. Definiowanie komunikatów o błędach w oddzielnym pliku nagłówka:

    #include "ErrorMessages.h" 
    cout << ERRORMESSAGE_1 <<endl; 
    exit(-1); 
    
  3. utworzyć funkcję, która zawiera komunikaty o błędach .

Czy często należy dodawać unikalne identyfikatory błędów jako część tych wiadomości?

+0

Pierwszy sposób nie jest zbyt przyjazne dla lokalizacji. – qdii

+1

Obsługa wyjątków? – Rapptz

+5

... Aaaaaand, komunikaty o błędach przechodzą do 'cerr', a nie do' cout'. –

Odpowiedz

4

To wszystko jest kwestią preferencji zarówno z korzyściami, jak i upadkami.

Twarde kodowanie literałów literowych na stronie błędu może być trudniejsze do utrzymania, ale jest również łatwiejsze do odczytania w mojej szczerej opinii.

np

cout << "You were unable to login. " 
    << "Please check you're user name and password and try again" 
    << endl; 

pokazuje zamiar dużo lepiej niż

cout << LOGIN_CREDENTIALS_ERROR << endl; 

Jednakże, boki plus nie trudno kodowania wiadomości (zarówno 2 i 3):

//Foo.cpp: 
cout << DIVIDE_BY_ZERO_ERROR << endl; 

//Bar.cpp 
cout << DIVIDE_BY_ZERO_ERROR << endl; 

// If you want to change DIVIDE_BY_ZERO_ERROR text you only have to do it once 
//ErrorMessages.h (Ops grammar needs correcting) 
const std:string DIVIDE_BY_ZERO_ERROR = "Dont not divide by zero"; 

Ponadto, jeśli komunikaty o błędach mogą ulec zmianie:

// ErrorMessages.h 
#ifdef LOCALIZATION_EN 
const std:string FRIENDLY_ERROR = "Hello, you are doing something wrong"; 
#elseif LOCALIZATION_FR 
const std:string FRIENDLY_ERROR = "Bonjour, ..."; 
... 

lub

// ErrorMessages.h 
#ifdef DEBUG 
const std:string SOME_ERROR = "More detailed error information for developers" 
#else 
const std:string SOME_ERROR = "Human friendly error message" 
#endif 
1

To zależy od tego, czy masz wymagania lokalizacyjne dla swojej aplikacji. Jeśli to zrobisz, chcesz wszystkie swoje ciągi w jednym miejscu, w tym komunikaty o błędach. Jeśli nie masz takich wymagań, wolę umieszczać wiadomości w linii (twój pierwszy przykład). W ten sposób, jeśli chcę znaleźć kod, który narzeka, mogę po prostu przesłać wiadomość.

Powiązane problemy