У меня есть много разных условий по типу
if(...код 0..)
{
throw WSAException();
}
if(...код 1..)
{
throw WSAException();
}
if(...код 2..)
{
throw WSAException();
}
if(...код 3..)
{
throw WSAException();
}
и т.д
как видите throw WSAException();
постоянно повторяется
Я бы хотел написать эту функцию один раз для всех условий.
Пользуемся тем, что если уж сгенерировалось исключение - все остальные if
не проверяются.
Самое время вспомнить о сокращенном вычислении - в
if (a || b || с ...)
при первом же истинном выражении все остальные не вычисляются. Так что...
if (код1 || код2 || код3 ...) throw...
Не понимаю, что вы хотите в точности, но напишите макрос - типа
#define THROWIF(x) if (x) { throw 1; }
или
#define THROWIF(x,y) if (x) { throw y; }
Update
Если и это не убедит - тогда уж не знаю совсем...
#include <iostream>
#include <iomanip>
using namespace std;
int error()
{
cout << "Error ";
return 0;
}
void f1(int a, int b, int c)
{
if (cout << "1", a > b) throw error();
if (cout << "2", b > c) throw error();
if (cout << "3", a < c) throw error();
cout << "All right 1 ";
}
void f2(int a, int b, int c)
{
if ((cout << "1", a > b) || (cout << "2", b > c) || (cout << "3", a < c)) throw error();
cout << "All right 2 ";
}
int main(int argc, const char * argv[])
{
for(int a = 1; a <= 3; ++a)
{
for(int b = 1; b <= 3; ++b)
{
for(int c = 1; c <= 3; ++c)
{
cout << a << b << c << ": ";
try
{
f1(a,b,c);
}
catch(...) {}
try
{
f2(a,b,c);
}
catch(...) {}
cout << endl;
}
}
}
}
Вы можете воспользоваться "проваливающимся" switch-case
:
switch(код){
case код_0:
case код_1:
case код_2:
case код_3:
throw WSAException();
break;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Не могу понять, для чего обозреватель решений Visual Studio 2019 имеет разделы Исходные файлы и Файлы заголовков
Все привет :) будьте внимательны пожалуйста
Как известно, функция Эйлера ищет количество взаимно простых чисел с N на отрезке [1N]
Занялся написанием небольшой игрушки и вот добравшись до музыкально-звуковой составляющий столкнулся с проблемой