c # остановить выполнение кода в библиотеке

Я пытаюсь выяснить в C # Winforms, если это возможно, чтобы остановить выполнение кода, вызвав функцию, а не return,

Следующий код возможен в PHP

if($something == null)
$this->response->error(0);

// This code is never executed if the condition is true
echo 'Hello';

И библиотека response, имеет что-то вроде:

public class Response
{
public function error($index)
{
$response = array();

switch ($index)
{
case 0: $response = array('msg' => 'fields missing..'); break;
}

// The trick is here
exit(json_encode($response));
}
}

Итак, в проекте C # и в моей форме я называю response библиотека таким образом:

private void button1_Click(object sender, EventArgs e)
{
libraries.Response Response = new libraries.Response();

if(textBox1.Text == "")
Response.error(0);

// The code continues to get executed even if the condition is true
button2.PerformClick();
}

Ответ вызывает MessageBox который, очевидно, не имеет ничего, что делает выполнение кода, чтобы остановить.

class Response
{
public void error(int index)
{
string msg = "";

switch (index)
{
case 0: msg = "Fields missing.."; break;
}

MessageBox.Show(msg, "My app", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

Теперь я знаю, что могу использовать return как показано в приведенном ниже коде, чтобы остановить выполнение кода, но мне было интересно, есть ли что-то еще, что я могу поместить в библиотеку responseчто бы сделать трюк?

if(textBox1.Text == "")
{
Response.error(0);
return;
}

1

Решение

В .NET, чтобы остановить выполнение кода в исключительных ситуациях, вы можете выдать исключение. Таким образом, строки кода, которые находятся после оператора throw, не будут выполняться, а исключение будет пузыриться в стеке до первого try-catch который соответствует конкретному типу исключения и коду блока catch. Если в стеке вызовов не найдено подходящего блока try-catch, процесс будет прерван, и пользователю будет показано сообщение.

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

Бросить Exception ты можешь использовать throw заявление. Например:

public string GetObjectTypeName(object something)
{
if(something==null)
throw new Exception("Some Exception Message");

return something.GetType().Name;
}

Для получения дополнительной информации взгляните на эти ресурсы:

1

Другие решения

Также вы можете использовать else пункт:

if(textBox1.Text == "")
{
Response.error(0);
}
else
{
button2.PerformClick();
}

но если вы не выдает ошибку, используя goto заявление и не хочу использовать много if-elses тогда return это ваш вариант.

РЕДАКТИРОВАТЬ

Единственная возможность заставить вызывающий метод прекратить выполнение из вызываемого метода, о котором я могу думать (кроме полного выключения вашего приложения), — это бросить Exception,

0

По вопросам рекламы [email protected]