为什么多功能代码行不会产生错误而只是暂停执行?

时间:2017-06-23 18:22:52

标签: javascript angular typescript error-handling

我理解下面的代码行是可怕的编码,但我的问题是为什么这种类型的代码不会产生控制台错误,而只是停止执行?

示例:

假设有一个名为mySessionItem的会话存储项,其值为JSON且其中包含属性myObjectProperty,则执行时会生成以下代码,并且会话存储项设置为有效的JSON。

let myVar = JSON.parse(sessionStorage.getItem("mySessionItem"))["myObjectProperty"] === "myValue" ? false : true; 

但是,如果未设置会话存储,或者设置为无效JSON或有效JSON但缺少属性myProperty,则会出错并停止执行。

这是正常的行为,我会从这些糟糕的代码中得到一些东西。但是,这不会产生控制台错误,因此很难追踪。

是否有理由不会导致控制台错误,有什么方法可以强制它以编程方式生成一个,有没有简单的方法来追踪这样的问题?

我在一个拥有不同编码能力的成员的大型团队工作,并且像这样的事情进入代码库我想找到更好的跟踪它们的方法,因为它们在大型应用程序中可能非常难以捉摸到处都是肆虐。

作为参考,我们的团队正在使用通过Angular CLI使用TypeScript实现的Angular 2。我不确定这些事情中的一个是否会在错误的代码中发挥作用产生错误,所以我想确保我强调了我们使用的工具。

1 个答案:

答案 0 :(得分:1)

你可以做类似于在Typescript中为会话对象创建一个类,然后尝试访问该属性,因为该类将始终具有该属性。

> let myVar: boolean = new Session(JSON.parse(sessionStorage.getItem("mySessionItem"))).myObjectProperty === "myValue" ? false : true;

这使用了Typescript的一些类型安全功能,你可以控制构造函数中会话Object的内容,如果我们说没有设置或缺少属性。

constructor(options: { myObjectProperty?: string } = {}){
   this.myPropertyObject = options.myPropertyObject || '';
}