From 0667721b0999fe6407c1a82888a760ea5d0e2c7d Mon Sep 17 00:00:00 2001 From: Jongha Kim Date: Sun, 16 May 2021 22:07:48 +0900 Subject: [Fix] Error documents (#854) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Web/JavaScript/Reference/Global_Objects/Error 문서에서 아래 사항 수정 - en-US와 내용 동기화 - Specification, Compat 매크로 en-US와 동기화 --- .../reference/global_objects/error/index.html | 280 +++++++++++++-------- 1 file changed, 171 insertions(+), 109 deletions(-) (limited to 'files/ko') diff --git a/files/ko/web/javascript/reference/global_objects/error/index.html b/files/ko/web/javascript/reference/global_objects/error/index.html index 986cb5afa0..9eb672499f 100644 --- a/files/ko/web/javascript/reference/global_objects/error/index.html +++ b/files/ko/web/javascript/reference/global_objects/error/index.html @@ -6,104 +6,172 @@ tags: - JavaScript - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Error +browser-compat: javascript.builtins.Error --- -
{{JSRef}}
- -

Error 생성자는 오류 객체를 생성합니다. Error 객체의 인스턴스는 런타임 오류가 발생했을 때 던져집니다. Error 객체를 사용자 지정 예외의 기반 객체로 사용할 수도 있습니다.

- -

구문

- -
new Error([message[, fileName[, lineNumber]]])
-

매개변수

+
{{JSRef}}
-
-
message {{optional_inline}}
-
사람이 읽을 수 있는, 오류에 대한 설명.
-
fileName {{optional_inline}} {{non-standard_inline}}
-
생성할 Error 객체의 fileName 속성 값. 기본값은 Error 생성자를 호출한 코드를 포함하고 있는 파일의 이름입니다.
-
lineNumber {{optional_inline}} {{non-standard_inline}}
-
생성할 Error 객체의 lineNumber 속성 값. 기본값은 Error 생성자 호출을 포함한 줄 번호입니다.
-
+

+ Error 객체는 런타임 오류가 발생했을 때 던져집니다. + Error 객체를 사용자 지정 예외의 기반 객체로 사용할 수도 있습니다. + 아래 표준 내장 오류 유형을 참고하세요. +

설명

런타임 오류는 새로운 Error 객체를 생성하고 던집니다.

-

이 페이지는 Error 오브젝트 자체와, 생성자 함수로서의 사용처를 다룹니다. Error 인스턴스가 상속하는 속성과 메서드는 {{jsxref("Error.prototype")}}을 참고하세요.

+

오류 유형

-

함수로 사용

- -

Error를 {{jsxref("Operators/new", "new")}} 없이 함수로 사용하면 Error 객체를 반환합니다. 즉 Error를 직접 호출해도 인스턴스를 만드는 것과 동일한 결과를 얻을 수 있습니다.

- -
// 이렇게 호출하는 것과
-const x = Error('I was created using a function call!');
-​​​​// 이렇게 사용하는게 동일
-const y = new Error('I was constructed via the "new" keyword!');
-
- -

오류 유형

- -

JavaScript에는 일반적인 Error 생성자 외에도 7개의 중요 오류 생성자가 존재합니다. 클라이언트측 예외에 대해서는 제어 흐름과 에러 처리를 참고하세요.

+

+ JavaScript에는 일반적인 Error 생성자 외에도 여러 개의 중요 오류 + 생성자가 존재합니다. 클라이언트측 예외에 대해서는 + 제어 흐름과 에러 처리를 참고하세요. +

-
{{jsxref("EvalError")}}
-
전역 함수 {{jsxref("eval", "eval()")}}에서 발생하는 오류의 인스턴스를 생성합니다.
-
{{jsxref("InternalError")}} {{non-standard_inline}}
-
JavaScript 엔진의 내부에서 오류가 발생했음을 나타내는 오류 인스턴스를 생성합니다.
-
{{jsxref("RangeError")}}
-
숫자 변수나 매개변수가 유효한 범위를 벗어났음을 나타내는 오류 인스턴스를 생성합니다.
-
{{jsxref("ReferenceError")}}
-
잘못된 참조를 했음을 나타내는 오류 인스턴스를 생성합니다.
-
{{jsxref("SyntaxError")}}
-
{{jsxref("eval", "eval()")}}이 코드를 분석하는 중 잘못된 구문을 만났음을 나타내는 오류 인스턴스를 생성합니다.
-
{{jsxref("TypeError")}}
-
변수나 매개변수가 유효한 자료형이 아님을 나타내는 오류 인스턴스를 생성합니다.
-
{{jsxref("URIError")}}
-
{{jsxref("encodeURI", "encodeURI()")}}나 {{jsxref("decodeURI", "decodeURl()")}} 함수에 부적절한 매개변수를 제공했을 때 발생하는 오류의 인스턴스를 생성합니다.
+
{{jsxref("EvalError")}}
+
+ 전역 함수 {{jsxref("eval", "eval()")}}에서 발생하는 오류의 인스턴스를 + 생성합니다. +
+
{{jsxref("RangeError")}}
+
+ 숫자 변수나 매개변수가 유효한 범위를 벗어났음을 나타내는 오류 인스턴스를 + 생성합니다. +
+
{{jsxref("ReferenceError")}}
+
잘못된 참조를 했음을 나타내는 오류 인스턴스를 생성합니다.
+
{{jsxref("SyntaxError")}}
+
+ {{jsxref("eval", "eval()")}}이 코드를 분석하는 중 잘못된 구문을 만났음을 + 나타내는 오류 인스턴스를 생성합니다. +
+
{{jsxref("TypeError")}}
+
+ 변수나 매개변수가 유효한 자료형이 아님을 나타내는 오류 인스턴스를 + 생성합니다. +
+
{{jsxref("URIError")}}
+
+ {{jsxref("encodeURI", "encodeURI()")}}나 {{jsxref("decodeURI", + "decodeURl()")}} 함수에 부적절한 매개변수를 제공했을 때 발생하는 오류의 + 인스턴스를 생성합니다. +
+
{{JSxRef("AggregateError")}}
+
+ 하나의 동작이 여러 개의 오류 발생시키는 경우(예: + {{JSxRef("Promise.any()")}}) 여러 오류를 하나의 오류로 감싸는 인스턴스를 + 만듭니다. +
+
{{jsxref("InternalError")}} {{non-standard_inline}}
+
+ JavaScript 엔진의 내부에서 오류가 발생했음을 나타내는 오류 인스턴스를 + 생성합니다. +
-

속성

+

생성자

-
{{jsxref("Error.prototype")}}
-
Error 인스턴스에 속성을 추가할 수 있습니다.
+
+ Error() +
+
새로운 Error 객체를 만듭니다.
-

메서드

- -

전역 Error 객체는 자신의 메서드를 가지지 않습니다. 그러나 프로토타입 체인을 통해 일부 메서드를 상속받습니다.

- -

Error 인스턴스

+

정적 메서드

-
{{page('ko/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', '설명')}}
+
+
{{JSxRef("Error.captureStackTrace()")}}
+
+ 오류 인스턴스의 {{JSxRef("Error.prototype.stack", "stack")}} 속성을 만드는 + 비표준 V8 함수 +
+
-

속성

+

인스턴스 속성

-
{{page('ko/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', '속성')}}
+
+
{{jsxref("Error.prototype.message")}}
+
오류 메시지
+
{{jsxref("Error.prototype.name")}}
+
오류 이름
+
{{jsxref("Error.prototype.description")}}
+
+ 오류를 설명하기 위한 비표준 마이크로소프트 속성. + {{jsxref("Error.prototype.message", "message")}}와 비슷합니다. +
+
{{jsxref("Error.prototype.number")}}
+
오류 번호를 위한 비표준 마이크로소프트 속성
+
{{jsxref("Error.prototype.fileName")}}
+
해당 오류를 발생시킨 파일의 경로를 표시하기 위한 비표준 모질라 속성
+
{{jsxref("Error.prototype.lineNumber")}}
+
+ 해당 오류를 발생시킨 파일의 줄 번호를 표시하기 위한 비표준 모질라 속성 +
+
{{jsxref("Error.prototype.columnNumber")}}
+
+ 해당 오류를 발생시킨 파일의 칸 번호를 표시하기 위한 비표준 모질라 속성 +
+
{{jsxref("Error.prototype.stack")}}
+
스택 추적을 위한 비표준 모질라 속성
+
-

메서드

+

인스턴스 메서드

-
{{page('ko/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', '메서드')}}
+
+
{{jsxref("Error.prototype.toString()")}}
+
+ 명시된 객체를 표현하기 위한 문자열을 반환합니다. + {{jsxref("Object.prototype.toString()")}} 메서드를 오버라이드합니다.. +
+

예제

-

일반적인 오류 던지기

+

+ 일반적인 오류 던지기 +

-

Error 객체를 생성한 후엔 대개 {{jsxref("Statements/throw", "throw")}} 키워드를 이용해 던집니다. {{jsxref("Statements/try...catch", "try...catch")}} 구문을 이용하여 오류를 처리할 수 있습니다.

+

+ Error 객체를 생성한 후엔 대개 {{jsxref("Statements/throw", + "throw")}} 키워드를 이용해 던집니다. {{jsxref("Statements/try...catch", + "try...catch")}} 구문을 이용하여 오류를 처리할 수 있습니다. +

-
try {
+
+try {
   throw new Error("이런!");
 } catch (e) {
   alert(e.name + ": " + e.message);
 }
 
-

특정 오류 처리하기

- -

this should probably be removed오류의 {{jsxref("Object.prototype.constructor", "constructor")}} 속성을 판별해 특정 오류에 대해서만 처리를 할 수 있습니다. 현대적인 JavaScript 엔진의 코드를 작성한다면 {{jsxref("Operators/instanceof", "instanceof")}} 키워드를 이용할 수도 있습니다.

- -
try {
+

+ 특정 오류 처리하기 +

+ +

+ 오류의 {{jsxref("Object.prototype.constructor", "constructor")}} 속성을 이용해 + 유형을 판별, 특정 오류만 처리할 수 있습니다. 만약 최신 Javascript 엔진에서 + 동작하는 코드를 작성한다면 {{jsxref("Operators/instanceof", + "instanceof")}} 키워드를 이용할 수도 있습니다. +

+ +
+try {
   foo.bar();
 } catch (e) {
   if (e instanceof EvalError) {
@@ -117,19 +185,38 @@ const y = new Error('I was constructed via the "new" keyword!');
 
 

사용자 정의 에러 타입

-

throw new MyError() 이후 instanceof MyError로 직접 만든 오류를 판별할 수 있도록 Error의 파생 오류 정의를 고려해보세요. 더 깔끔하고 일관적인 오류 처리 코드를 작성할 수 있습니다. StackOverflow의 "What's a good way to extend Error in JavaScript?"를 방문해 심도 있는 논의를 읽어보세요.

+

+ throw new MyError() 이후 instanceof MyError로 직접 + 만든 오류를 판별할 수 있도록 Error의 파생 오류 정의를 + 고려해보세요. 더 깔끔하고 일관적인 오류 처리 코드를 작성할 수 + 있습니다. StackOverflow의 "What's a good way to extend Error in JavaScript?"를 방문해 심도 있는 논의를 읽어보세요. +

ES6 사용자 정의 오류 클래스

-

Babel 버전 7 미만으로 사용자 정의 오류 클래스를 처리하려면 {{jsxref("Object.defineProperty()")}} 메서드를 사용해 정의해야만 합니다. 그렇지 않으면 오래된 Babel 및 다른 트랜스파일러가 추가 설정 없이 코드를 처리할 수 없습니다.

+

+ Babel 버전 7 미만으로 사용자 정의 오류 클래스를 처리하려면 + {{jsxref("Object.defineProperty()")}} 메서드를 사용해 정의해야만 합니다. + 그렇지 않으면 오래된 Babel 및 다른 트랜스파일러가 추가 설정 없이 코드를 처리할 수 없습니다. +

-

ES2015 클래스를 사용할 때, 일부 브라우저는 CustomError 생성자를 스택 트레이스에 포함합니다.

+

+ ES2015 클래스를 사용할 때, 일부 브라우저는 CustomError 생성자를 + 스택 트레이스에 포함합니다. +

-
class CustomError extends Error {
+
+class CustomError extends Error {
   constructor(foo = 'bar', ...params) {
     // Pass remaining arguments (including vendor specific ones) to parent constructor
     super(...params);
@@ -151,15 +238,20 @@ try {
   console.log(e.foo); //baz
   console.log(e.message); //bazMessage
   console.log(e.stack); //stacktrace
-}
+}

ES5 사용자 정의 오류 객체

-

프로토타입 선언을 사용하면 모든 브라우저가 CustomError 생성자를 스택 트레이스에 포함합니다.

+

+ 프로토타입 선언을 사용하면 모든 브라우저가 CustomError 생성자를 + 스택 트레이스에 포함합니다. +

-
function CustomError(foo, message, fileName, lineNumber) {
+
+function CustomError(foo, message, fileName, lineNumber) {
   var instance = new Error(message, fileName, lineNumber);
   instance.foo = foo;
   Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
@@ -193,48 +285,18 @@ try {
 }
 
-

명세

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.11', 'Error')}}{{Spec2('ES5.1')}} 
{{SpecName('ES2015', '#sec-error-objects', 'Error')}}{{Spec2('ES2015')}} 
{{SpecName('ESDraft', '#sec-error-objects', 'Error')}}{{Spec2('ESDraft')}} 
- -

브라우저 호환성

+

명세

+{{Specifications}} +

브라우저 호환성

-

{{Compat("javascript.builtins.Error")}}

+

{{Compat}}

같이 보기

    -
  • {{jsxref("Error.prototype")}}
  • -
  • {{jsxref("Statements/throw", "throw")}}
  • -
  • {{jsxref("Statements/try...catch", "try...catch")}}
  • +
  • {{jsxref("Error.prototype")}}
  • +
  • {{jsxref("Statements/throw", "throw")}}
  • +
  • {{jsxref("Statements/try...catch", "try...catch")}}
-- cgit v1.2.3-54-g00ecf