static IAsyncResult BeginXXX(AsyncCallback cb){
Action f = DoWork;
return f.BeginInvoke(cb, null);
}

static void EndXXX(IAsyncResult ar){
AsyncResult res = (AsyncResult)ar;
Action del = (Action)res.AsyncDelegate;
del.EndInvoke(ar);
}

static void DoWork(){
throw new System.Exception("例外っす");
}

static void Main(string[] args){
AsyncCallback cb = (ar) =>{
try{
EndXXX(ar);
}
catch (Exception ex){
Console.Write(ex.Message);
}
};
BeginXXX(cb);
Console.ReadKey();
}