포니 원인 1.0: 오류 원인
5003 단어 showdevtypescriptjavascriptnode
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 is이 ponyfill에 대한 도우미를 제공하는 것입니다.
조랑말 원인은 무엇을 추가합니까?
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.0 및 Deno v1.13 둘 다 이미 해당 버전의 V8과 함께 제공되었습니다.
이전 브라우저 또는 이전 Node.js 버전을 지원하려면 여전히 ponyfill 또는 polyfill이 필요합니다.
Pony Cause 또한 이전 환경에서 사용하든 사용하지 않든 상관없이 유용한 도우미를 제공합니다. 도구 상자에 필요한 모듈입니다 😉
Reference
이 문제에 관하여(포니 원인 1.0: 오류 원인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/voxpelli/pony-cause-1-0-error-causes-2l2o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)