这是一个简单的程序:
class Program
{
static Calc calc = new Calc();
static void Main(string[] args)
{
try
{
var t1 = new Thread(calc.Divide);
t1.Start();
}
catch (DivideByZeroException e)
{
//Console.WriteLine("Error thread: " + e.Message);
}
try
{
calc.Divide();
}
catch (Exception e)
{
//Console.WriteLine("Error calc: " + e.Message);
}
}
class Calc
{
public int Num1;
public int Num2;
Random random = new Random();
public void Divide()
{
for (int i = 0; i < 100000; i++)
{
Num1 = random.Next(1, 10);
Num2 = random.Next(1, 10);
try
{
int result = Num1 / Num2;
}
catch (Exception ex)
{
throw ex;
}
Num1 = 0;
Num2 = 0;
}
}
}
}
两个线程同时执行同一方法。其中一个将Num1设置为0,而另一个则尝试同时除以Num1(0)。问题是为什么会引发异常,为什么它没有被Main方法内的try catch块捕获?
catch
捕获)。 - George Duckett