포니 원인 1.0: 오류 원인

Pony Cause은 나의 새로운ponyfill이고 새로운Error Cause tc39proposal의 도우미입니다.

ponyfill과 제안은 VError/NError를 오류를 래핑하고 오류 컨텍스트를 개선하기 위한 표준 메커니즘으로 대체하는 것을 목표로 합니다.

오류를 어떻게 래핑합니까?



오류 원인 제안은 Error 생성자에 두 번째 인수를 추가합니다.

새 인수는 지금까지cause가 유일하게 정의된 키로 있는 일반 개체입니다.
cause는 포착된 오류의 값입니다.

그렇게 하면cause 상위 수준Error이 하위 수준 오류 중 하나를 참조할 수 있으므로 세부 정보를 희생하지 않고 컨텍스트를 추가할 수 있습니다.

예:

try {
  // ...
  throw new Error('ABC123 exception encountered in database "Foo"');
} catch (err) {
  throw new Error('Failed to save blog post', { cause: err })
}

Failed to save blog post 메시지는 더 높은 수준의 컨텍스트를 제공하고, 무슨 일이 일어났는지, 영향을 알려줍니다.

내부ABC123 exception encountered in database "Foo" 메시지는 왜 이런 일이 발생했는지 알려주고 원인을 알려줍니다.

그렇다면 왜 오류를 래핑합니까?



고전적인 JavaScript에서는 영향이나 원인을 알게 되지만 둘 다 알 수는 없습니다Error :s(개별적으로 기록하거나 VError/NError를 사용하지 않는 한).

영향과 원인은 다른 것과 짝을 이룰 때 가장 큰 가치를 제공하며, 그것이 Error Cause이 가능하게 하고 Pony Cause isponyfill에 대한 도우미를 제공하는 것입니다.

조랑말 원인은 무엇을 추가합니까?



Pony Cause is은 두 부분으로 구성됩니다.
  • 새로운 원인 지원 ErrorWithCause 클래스를 모방 한 Error 클래스 모양의 ponyfill.
  • 오류 원인 작업을 위해 VError 영감을 받은 몇 가지 도우미가 추가된 컨텍스트가 실제로 유용하도록 합니다. 이러한 도우미는 새로운 오류 원인 외에도 VError 스타일 원인을 지원하여 하나에서 다른 것으로 원활하게 전환할 수 있습니다.

  • 어떤 도우미가 추가됩니까?


  • findCauseByReference(err, Error)
  • getErrorCause(err)
  • stackWithCauses(err)

  • 내가 알아야 할 다른 것이 있습니까?



    Pony Cause는 JS로 작성되었으며 JSDoc으로 타이핑되고 TypeScript로 검증되었으며 TypeScript로 생성된 .d.ts/.d.ts.map이 있습니다. 즉, 100% typed 진정한 Types in JS 정신으로.

    포니필의 요점인 지금 여기에서 호환성을 극대화하기 위해 ESM이 아닌 CommonJS 모듈입니다.

    저작자 표시 요구 사항이 제거된 BSD/MIT 스타일 라이선스인 0BSD 라이선스에 따라 라이선스가 부여되었습니다.

    네이티브 지원이 있습니까?



    예, 한 달 전에 예를 들어 all three major browsers 및 V8 shipped native support에서 최근에 구현되었습니다. Node.js v16.9.0Deno v1.13 둘 다 이미 해당 버전의 V8과 함께 제공되었습니다.

    이전 브라우저 또는 이전 Node.js 버전을 지원하려면 여전히 ponyfill 또는 polyfill이 필요합니다.

    Pony Cause 또한 이전 환경에서 사용하든 사용하지 않든 상관없이 유용한 도우미를 제공합니다. 도구 상자에 필요한 모듈입니다 😉

    좋은 웹페이지 즐겨찾기