[英]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.