[英]What are the best practice of making code error stable?
我需要使一些代码超级稳定,并确保块中引发的所有异常都不会停止代码执行。
现在,我有以下解决方案:
iterated.map(it -> {
try {
handleElement(it);
} catch (Exception e) {
handleError(e);
}
});
但是从另一方面来说,我觉得应该有更优雅的方法来做到这一点。 请帮我找到它。
您的代码没有错,我可能会保持原样,但是如果您愿意,您可以拥有一个处理另一个函数并捕获异常的函数:
public class ExceptionCatcher<T, R> implements Function<T, R> {
public final Function<T, R> function;
public final Function<Exception, R> exceptionHandler;
public ExceptionCatcher(Function<T, R> function, Function<Exception, R> exceptionHandler) {
this.function = function;
this.exceptionHandler = exceptionHandler;
}
@Override
public R apply(T o) {
try {
return function.apply(o);
}catch (Exception e){
return exceptionHandler.apply(e);
}
}
};
您的代码将如下所示:
ExceptionCatcher ex = new ExceptionCatcher(this::handleElement, this::handleError);
iterated.map(ex);
这只是一个例子。 您可能需要BiFunction
并基于异常和失败的onject映射到默认值,而不是简单的Consumer。 或返回null并在此之后过滤null。 这很大程度上取决于您要实现的目标
那确实是调用异常的方法,但是更重要的是如何处理这些事件。 当应用遇到无法预期的情况时,应引发异常。 仅捕获所有异常将
请记住,什么是您的应用程序真正的例外。 这里有些例子:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.