只是爲什麼流量沒有達到捕獲塊混淆。我明白,只要發生異常,將會調用OnError
方法,但在調用ToObservable
時應該不會發生異常?只有在處理第三個數字(0)時纔會發生異常。我完全被困惑。爲什麼catch塊在下面的Rx代碼中沒有命中?
static void Main()
{
try
{
var numbers = from number in
new int[] { 1, 2, 0, 3 }
select 10/number;
var observable = numbers.ToObservable();
observable.Subscribe(OnNext, OnError, OnComplete);
Console.ReadKey();
}
catch (Exception exc)
{
Console.WriteLine("Program terminated with the following message - {0}", exc.Message);
}
}
private static void OnNext(int i)
{
Console.WriteLine("Output : " + i);
}
private static void OnError(Exception exc)
{
Console.WriteLine("In oops : {0}", exc.Message);
}
private static void OnComplete()
{
Console.WriteLine("In done");
}
爲什麼你認爲異常應立即發生? – 2012-02-11 12:36:40
@JonSkeet bcoz當ToObservable被調用時它會嘗試將IEnumberable轉換爲IObservable,除以零異常會發生 – Sandbox 2012-02-11 12:39:30