Работа с исключениями

Hy! Я хотел бы попросить совета по использованию исключений. Я хочу упростить это ...

if (functionSomething1) and (functionSomething2) and (functionSomething3) then
  Do Something Good
else
  Raise Exception(errormsg_functionSomething1IsFalse or errormsg_functionSomething2IsFalse or errormsg_functionSomething3IsFalse);

Все мои функции возвращают логическое значение.

Каков наилучший способ получить сообщение об ошибке msg один за другим?

Например ... Если functionSomething1 является False, тогда я должен получить errormsg_functionSomething1IsFalse

Если functionSomething2 является False, тогда я должен получить errormsg_functionSomething1IsFalse и т. Д. ...

Я думаю, что If-then-else не является хорошим решением.

Случай или попробуйте, кроме? Как вы думаете?

Спасибо за ответы!

delphi,delphi-xe,

2

Ответов: 2


7 принят

Как это:

if not functionSomething1 then
  raise EMyException.Create(errormsg_functionSomething1IsFalse);
if not functionSomething2 then
  raise EMyException.Create(errormsg_functionSomething2IsFalse);
if not functionSomething3 then
  raise EMyException.Create(errormsg_functionSomething3IsFalse);

// do something good

0

В качестве альтернативы вы можете исключить исключения из FunctionSomethingX, хотя тогда им не нужно возвращать значения логического «успеха».

Преимущество такого способа заключается в том, что функция FunctionSomethingX, вероятно, имеет представление о том, почему она не удалась и, следовательно, возвращает более описательное сообщение об ошибке.

Недостатком является то, что все другие места, которые вызывают FunctionSomethingX, должны будут обрабатывать исключения, поднятые ими.

delphi, delphi-car,
Похожие вопросы