Exception handling for OpenSend()

 
What is the correct way to handling exception for OrderSend() function ?

Is the following MQL4 code a properly way?

bool OpenOrderSuccessCheck(int result) {	
   if ( result == ERR_NO_ERROR || result == ERR_NOT_ENOUGH_MONEY ||
        result == ERR_MARKET_CLOSED) {
      return (true);
   }   
   
   if ( result == ERR_REQUOTE || result == ERR_PRICE_CHANGED ) {
      RefreshRates();   
   }
 
   if ( result > 0 ) {
      Print("Error opening order: " + ErrorDescription(result));         
   }
      
   return (false);
}
 
int OpenBuyOrder(string symbol) {
   int result = -1;
   int tries = 5;
 
   while ( !OpenOrderSuccessCheck(result) && tries > 0 ) {
      result = OpenOrder(symbol, OP_BUY, volume, price, stopLoss, tp);  
      tries--;
   }
}
 
int OpenOrder(string symbol, int cmd, double volume, double price, double stopLoss, double takeProfit) {   
   int result = ERR_NO_ERROR;
      
   int ticket = OrderSend(symbol, cmd, volume, price, slippage, stopLoss, takeProfit, NULL, MAGICMA, 0, CLR_NONE);
      
   if ( ticket <= 0 ) {
      result = GetLastError();
   }
 
   return (result);
}
Reason: