Ако изпълня кода по-долу, който извиква 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 когато се допусне изключение:
В менюто за отстраняване на грешки кликнете върху Изключения.
В диалоговия прозорец "Изключения" изберете "Разхвърлян" за цяла категория изключения, например (вашият случай), Изключения за общ езиков режим.
0 за отговор № 3
Визуалното студио ще се намеси само при наличие на некачествено изключение, в този случай разделяне с 0. The try...catch
разглежда изключението. Тъй като няма останало изключение, Visual Studio няма да излезе.
0 за отговор № 4
опитите и изявленията за улов са предназначени, така че потокът от изпълнение все още да може да се случи, дори когато възникне изключение. Дебъгерът се спира само, когато изключението е некачествено, което try catch
прави.
Това е умишлено.