Error Handling - ZjzMisaka/PowerThreadPool.zh-CN.Wiki GitHub Wiki
如果任务抛出异常并执行失败, 抛出的异常将被记录下来. 这些信息可以在回调函数或 WorkEnded
和 ErrorOccurred
事件中访问.
回调函数
powerPool.QueueWorkItem(() =>
{
throw new Exception("Message");
}, (res) =>
{
if (res.Status == Status.Failed)
{
Console.WriteLine(res.Exception.Message);
}
});
WorkEnded
事件
该事件会在任务执行完毕后触发. 事件参数包括任务逻辑执行过程中抛出的异常信息.
powerPool.WorkEnded += (s, e) =>
{
if (!e.Succeed)
{
Console.WriteLine(e.Exception.Message);
}
};
ErrorOccurred
事件
该事件会在任务逻辑、回调函数或事件(除了 ErrorOccurred
本身)中抛出任何异常后触发. 事件参数包括抛出异常的信息.
正如 "没有回收站的回收站" , 用户必须自行捕获 ErrorOccurred
中抛出的异常, 否则线程池将会崩溃.
powerPool.ErrorOccurred += (s, e) =>
{
if (e.ErrorFrom == ErrorFrom.Callback)
{
Console.WriteLine(e.Exception.Message);
}
};
ErrorFrom
枚举
enum ErrorFrom
{
Callback,
DefaultCallback,
PoolStarted,
PoolIdled,
WorkStarted,
WorkEnded,
PoolTimedOut,
WorkTimedOut,
WorkStopped,
WorkCanceled,
WorkLogic,
}