我想知道我对Exception
的理解是否不正确。我有以下代码:
try
{
// ... code calls a function which throws a UASException()
}
catch (UASException ex)
{
throw;
}
catch (Exception ex)
{
throw new UASException("An unknown error has occured", ex);
}
现在,当我重新抛出UASException
后,它会被以下Catch
抓住,这是正确的吗?我认为它应该返回到重新抛出UASException
的调用代码。
我能错过什么?
答案 0 :(得分:2)
不,不。仅挑选一个异常处理程序(具有最佳匹配异常类型的异常处理程序)。你可以轻松尝试,但......
示例:以下代码输出" Catch 1"和不" Catch 2",这就是我所说的。无论catch
块内是否发生异常,都只执行一个catch
。要捕获catch
块中的异常,您需要嵌套catch
块。
using System;
using System.Collections.Generic;
using System.Text;
namespace CSharp
{
public class Class1
{
public static void Main(string[] args)
{
try
{
throw new ArgumentException("BANG!");
}
catch (ArgumentException)
{
Console.WriteLine("Catch 1");
throw;
}
catch
{
Console.WriteLine("Catch 2");
}
}
}
}