AOP является обязательным для реализации чистого кода, однако, если вы хотите окружить блок на C #, общие методы имеют относительно простое использование. (с понятием intelli и строго типизированным кодом). Конечно, он НЕ может быть альтернативой AOP.
Хотя PostSHarp имеют мало проблем с ошибкой (я не уверен, что буду использовать на производстве ), это хороший материал.
Общий класс обертки,
public class Wrapper
{
public static Exception TryCatch(Action actionToWrap, Action exceptionHandler = null)
{
Exception retval = null;
try
{
actionToWrap();
}
catch (Exception exception)
{
retval = exception;
if (exceptionHandler != null)
{
exceptionHandler(retval);
}
}
return retval;
}
public static Exception LogOnError(Action actionToWrap, string errorMessage = "", Action afterExceptionHandled = null)
{
return Wrapper.TryCatch(actionToWrap, (e) =>
{
if (afterExceptionHandled != null)
{
afterExceptionHandled(e);
}
});
}
}
использование может быть таким (с понятием intelli)
var exception = Wrapper.LogOnError(() =>
{
MessageBox.Show("test");
throw new Exception("test");
}, "Hata");