我试图用ES6和Babel扩展Error.它没有成功.
class MyError extends Error {
  constructor(m) {
    super(m);
  }
}
var error = new Error("ll");
var myerror = new MyError("ll");
console.log(error.message) //shows up correctly
console.log(myerror.message) //shows empty string
Error对象永远不会获得正确的消息集.
现在我已经在SO上看到了一些解决方案(例如这里),但它们看起来都非常非ES6-y.如何以漂亮的ES6方式做到这一点?(那是在Babel工作)
我们有以下TestComponent.tsTypeScript类:
01: import TestVectorLayer from './TestVectorLayer'
02: 
03: export class TestComponent implements OnInit {
04:   private foo: any;
05: 
06:   constructor() { }
07: 
08:   const layer = new TestVectorLayer("foo");
09: }
并具有以下TestVectorLayer.ts功能:
请记住,OpenLayer 3正在使用Google Closure库,这就是为什么TestVectorLayer它不是TypeScript类.
01: declare let ol: any;
02:
03: const TestVectorLayer = function (layerName: string) {
04:   ...
05:   console.log(layerName);
06:
07:   ol.layer.Image.call(this, opts);
08: }
09:
10: ol.inherits(TestVectorLayer as any, ol.layer.Image as any);
11:
12: export default TestVectorLayer; 
我们收到以下错误: …
在Java中,我将这样声明一个函数:
public boolean Test(boolean test) throws Exception {
  if (test == true)
    return false;
  throw new Exception();
}
而且我可以使用此功能而无需处理异常。
如果可能,如何在Typescript中执行相同的操作?编译器会告诉我,如果没有try / catch,我将无法使用该函数。
我有 Java 开发背景,而且对 JavaScript/TypeScript 还很陌生。
是否有标准方法来管理和保留 JavaScript/TypeScript 中错误的原因?
我的目的是当我将一个 Error 包装到另一个 Error 中时获得完整的堆栈跟踪;有点像 Java 异常堆栈跟踪:
Message of exception 1
...
Caused by: Message of exception 2
...
Caused by: Message of the root exception
我尝试了这段代码,但err1没有保留以下参考err2:
// CODE
try {
    try {
        throw new Error("Error no2");
    } catch (err2) {
        console.log("========================================");
        console.log(err2);
        throw new Error("Error no1");
    }
} catch (err1) {
    console.log("========================================");
    console.log(err1);
}
// CONSOLE OUTPUT
$ node test.ts 
========================================
Error: Error no2
    at …