我们可以在QueuedTask.Run()中使用Try / Catch吗

时间:2018-07-18 00:15:27

标签: c# .net arcgis arcgis-runtime

我们可以在class Parent extends React.Component { constructor(props) { super(props); this.childTwo = React.createRef(); } newUserCreated = () => { this.childTwo.current.updateTable(); }; render() { return ( <div className="App"> <ChildOne newUserCreated={this.newUserCreated} /> <ChildTwo ref={this.childTwo} /> </div> ); } } class ChildOne extends React.Component { handleSubmit = () => { this.props.newUserCreated(); }; render() { return <button onClick={this.handleSubmit}>Submit</button>; } } class ChildTwo extends React.Component { updateTable() { console.log("Update Table"); } render() { return <div />; } } 中使用Try / Catch吗?

我觉得Try / Catch应该在QueuedTask.Run()之外,但我没有理由。请说明是否保留在QueuedTask.Run()

之内
QueuedTask.Run()

1 个答案:

答案 0 :(得分:0)

如果您没有理由在室外处理它,那么可以在内部处理它。只要能够正确处理异常,就应该始终处理异常。所以我会去里面的。

我对ArcGIS没有任何专业知识,但是如果QueuedTask.Run可以抛出它自己的异常(不是由您的委托生成的异常),您就不会以这种方式捕获它们。但是,无论如何,您应该分开处理。

还需要考虑,QueuedTask.Run似乎是async的操作。因此,要捕获任何异常,您需要先await。如果不能,那么您肯定需要将其捕获。

因此,确切的答案是:取决于。 glenebob评论说,这也可能是上下文决定:

  

我看到的唯一可能的问题是从后台线程调用DialogService.ShowPrompt()

附带说明:您只能将catch all exceptions作为最后的手段。参见this