Я пытаюсь выяснить в 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;
}
В .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;
}
Для получения дополнительной информации взгляните на эти ресурсы:
Также вы можете использовать else
пункт:
if(textBox1.Text == "")
{
Response.error(0);
}
else
{
button2.PerformClick();
}
но если вы не выдает ошибку, используя goto
заявление и не хочу использовать много if-elses тогда return
это ваш вариант.
РЕДАКТИРОВАТЬ
Единственная возможность заставить вызывающий метод прекратить выполнение из вызываемого метода, о котором я могу думать (кроме полного выключения вашего приложения), — это бросить Exception
,