如何处理Redux Reducer中的错误和异常?
我们目前正在测试React/Redux应用程序中的错误处理。(我已经读过了)。在React中,我们实现了这一点,并且工作得非常好:对于未处理的异常,不再有空白页 不,我们尝试在reducer中抛出错误,我们看到它们以未触及的redux状态登录到控制台 减速器必须是纯的 我绝对支持。该功能应“简单”,无副作用,并经过良好测试。问题是:reducer开发人员可能会做出错误的假设(例如,redux状态下的属性可能未定义)。这个例子的结果是如何处理Redux Reducer中的错误和异常?,redux,Redux,我们目前正在测试React/Redux应用程序中的错误处理。(我已经读过了)。在React中,我们实现了这一点,并且工作得非常好:对于未处理的异常,不再有空白页 不,我们尝试在reducer中抛出错误,我们看到它们以未触及的redux状态登录到控制台 减速器必须是纯的 我绝对支持。该功能应“简单”,无副作用,并经过良好测试。问题是:reducer开发人员可能会做出错误的假设(例如,redux状态下的属性可能未定义)。这个例子的结果是 [Error] Unhandled Promise Rejec
[Error] Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'someVariableWithCanBeNullOrUndefined.someFunction')
可以说:至少没有白纸。但现在应用程序的状态有点尴尬,因为这些动作都被调度和执行了,但没有正确地减少。这种错误很容易被监督。
有没有办法处理这些编程运行时错误?甚至可能在React的错误边界中出现
仅导致日志条目的错误reducer函数示例:
reduceSomeState(state = new SomeState(), action: SomeAction) {
throw new Error('some runtime error: e.g. a value in the state is undefined and accessed here');
}
据我所知,异常无法在Reducer或
connect(MapStateTops,mapDispatchToProps)(视图)中处理
尽管解决方案是设置一个全局错误处理程序。可以这样看:
import * as React from 'react';
import {render} from 'react-dom';
import {GlobalErrorView} from '../../globalError/GlobalErrorView';
window.onerror = (event: Event | string, source?: string, lineno?: number, colno?: number, error?: Error) => {
render(
(
<GlobalErrorView
error={error}
okAction={() => window.location.reload()}
/>
),
document.getElementById('app') as HTMLElement
);
};
import*as React from'React';
从'react dom'导入{render};
从“../../globalError/GlobalErrorView”导入{GlobalErrorView};
window.onerror=(event:event | string,source?:string,lineno?:number,colno?:number,error?:error)=>{
渲染(
(
window.location.reload()}
/>
),
document.getElementById('app')作为HTMLElement
);
};
您可以分享代码/一些示例代码吗?