MQLArticles/Utils/Try.mqh
2026-09-14 07:58:30 -05:00

81 lines
2.7 KiB
MQL5

//+------------------------------------------------------------------+
//| Try.mqh |
//| Copyright 2026, Niquel Mendoza. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza."
#property link "https://www.mql5.com"
#property strict
#ifndef MQLARTICLES_UTILS_TRY_MQH
#define MQLARTICLES_UTILS_TRY_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
namespace TSN
{
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
// #define MQLARTICLES_TRY_MOREINFO
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#ifdef MQLARTICLES_TRY_MOREINFO
struct MqlArticlesTryCath
{
MqlArticlesTryCath() : func(""), file(""), line(-1), err(false) {}
//---
string func;
string file;
int line;
bool err;
//---
void operator=(const bool v) { err = v; }
};
#endif // MQLARTICLES_TRY_MOREINFO
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#ifndef MQLARTICLES_TRY_MOREINFO
//---
#define MQLART_TRY_INI \
bool _err = false; \
while(true) {
#define MQLART_TRY(expr, expected) if(expr!=expected) { _err = true; break; }
#define MQLART_TRY_IS_ERR (_err)
//---
#else // MQLARTICLES_TRY_MOREINFO
//---
#define MQLART_TRY_INI \
MqlArticlesTryCath _err; \
while(true) {
#define MQLART_TRY(expr, expected) \
if(expr!=expected) \
{ _err.err = true; _err.line=__LINE__; _err.file==__FILE__; _err.func=__FUNCSIG__; break; }
#define MQLART_TRY_IS_ERR (_err.err)
#endif // MQLARTICLES_TRY_MOREINFO
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#define MQLART_TRY_END \
break; \
}
}
#endif // MQLARTICLES_UTILS_TRY_MQH
//+------------------------------------------------------------------+