Компиляция не удалась: выбросить исключение или нет? - PullRequest
0 голосов
/ 21 марта 2009

Я пишу .NET On-the-Fly компилятор для сценариев CLR. И есть дилемма: лучше бросить исключение при сбое сборки или нет?

Итак, какова точка зрения наилучшей практики, какой подход больше подходит?

try
{
  compiler.Compile(); // do not throws an exception only if build succeed
}
catch(CompilerException ex)
{
  string err = ex.Message;
}

или

compiler.Compile(); // throws an exception only in case of crash, etc
if(!compiler.BuildSucceed)
{
  string err = compiler.Output.ToString();
}

1 Ответ

5 голосов
/ 21 марта 2009

Исключения следует использовать для исключительных условий. Я бы сказал, что неудачная сборка не является исключительной , поэтому вам следует, чтобы интерфейс вашего компилятора возвращал значение, указывающее на успех или неудачу (например, bool или enum), и предоставлял интерфейс для возврата списка ошибки. Это может быть так же просто, как возвращение строки всех ошибок, объединенных вместе, или это может быть что-то вроде того, как вы передаете ему выходной поток заранее, и он регистрирует каждую ошибку в этом потоке, когда сталкивается с ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...