/ / C # спиране на грешка линия в опитайте улов [дубликат] - C #, опитайте-улов, прекъсване точки

C # спиране на грешка линия в опитайте улов [дубликат] - C #, опитайте-улов, гранични точки

Ако изпълня кода по-долу, който извиква Test1 (),VS2012 ще се справи чудесно на тази линия и ще ми покаже точно какво става. Ако коментирам Test1 и пуснах Test2, опитът на улова не спира на линията, просто го записва в конзолата.

Как мога да накарам VS2012 да спре на грешката линия, дори когато е заобиколен от пробна декларация за улов?

private void Button_Click(object sender, RoutedEventArgs e)
{
//Test1(); // No try catch - stops on error line dividing by zero.
Test2(); // Try catch - Just writes out to console.
}

private void MakeError()
{
int i = -1;
i += 1;
int j = 1 / i;
Console.WriteLine(j.ToString());
}

void Test1()
{
Console.WriteLine("MakeError in Test1");

MakeError();
}

void Test2()
{
Console.WriteLine("MakeError in Test2");
try
{
MakeError();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}

Отговори:

4 за отговор № 1

Докато другите отговори са правилни, това е умишлено поведение по подразбиране, можете да кажете на Visual Studio да Ви предупреди за тези изключения, ако желаете.

Как да: Прекъсване при изхвърляне на изключение:

В менюто за отстраняване на грешки кликнете върху Изключения.

В диалоговия прозорец "Изключения" изберете "Изхвърлен" за цяла категория изключения, например "Изключения за обикновения език по време на изпълнение".

-или-

Разширете възела за категория изключения, например Общи изключения по време на работа по време на работа и изберете "Изхвърлен" за конкретно изключение в рамките на тази категория.


1 за отговор № 2

Това, което искате, е Visual Studio когато се допусне изключение:

В менюто за отстраняване на грешки кликнете върху Изключения.

В диалоговия прозорец "Изключения" изберете "Разхвърлян" за цяла категория изключения, например (вашият случай), Изключения за общ езиков режим.

Референция на MSDN.


0 за отговор № 3

Визуалното студио ще се намеси само при наличие на некачествено изключение, в този случай разделяне с 0. The try...catch разглежда изключението. Тъй като няма останало изключение, Visual Studio няма да излезе.


0 за отговор № 4

опитите и изявленията за улов са предназначени, така че потокът от изпълнение все още да може да се случи, дори когато възникне изключение. Дебъгерът се спира само, когато изключението е некачествено, което try catch прави.

Това е умишлено.