OK, tôi thừa nhận rằng mã này sẽ trông lạ với bạn, và đó là vì nó là lạ. Đây chỉ là mã để tái tạo hành vi, không phải mã tôi muốn sử dụng.Không thể bắt ngoại lệ từ Activator.CreateInstance
class Program
{
static void Main(string[] args)
{
try
{
Activator.CreateInstance(typeof(Func<int>), new object[] { new object(), IntPtr.Zero });
}
catch
{
Console.WriteLine("This won't print!");
}
Console.Write("Actually this will not print either!");
Console.ReadLine();
}
}
Không có vấn đề gì loại ngoại lệ tôi cố gắng nắm bắt (ngoại lệ thực sự được ném là một ArgumentException theo như tôi có thể biết) mã bên trong khối catch sẽ không thực thi. Việc thực thi thực sự sẽ dừng lại ở dòng Activator.CreateInstance.
Điều này chỉ xảy ra khi xây dựng đại biểu? Bạn phải sử dụng 'Delegate.CreateDelegate' cho điều đó. –
Nó có thể chỉ xảy ra khi xây dựng các đại biểu nhưng mã thực tế nơi mà điều này được sử dụng là không biết loại nó đang cố gắng tạo ra, sửa chữa ngay bây giờ là nó là "cấm" để thậm chí thử nếu loại thừa hưởng từ Đại biểu. –