Я бы создал метод TryCreateCopy
и сделал бы что-то очень похожее на ответ @saya imad
Примерно так:
[HttpPost]
public ActionResult GraphMethod([FromForm]string str)
{
// These two if statements can be concatenated into one,
// but that would be a bit hard to read
if (this._copyManager.TryCreateCopy(str, out var affectedRows))
if (affectedRows > 1)
return Ok();
return BadRequest("Error!");
}
// _copyManager Method, there's probably a better way for you
public bool TryCreateCopy(string str, out int affectedRows)
{
try
{
affectedRows = CreateCopy(str);
}
// Please also don't do `catch (Exception)`,
// if you know which exception gets thrown always catch that
catch (Exception e)
{
affectedRows = -1;
return false;
}
return true;
}
Где метод TryCreateCopy возвращает true, когда копия была создана безгенерируемое исключение, false, если оно было выброшено *, и переменная out с числом затронутых строк
* Возможно, есть лучший способ сделать это, чем тот, который я вам показал (например, метод validate?) как try / catch довольно ресурсоемкий