נאָדע.דזשס טעות מיט קאָנטעקסט

ווי צו לייגן אַ טעות גרונט אין V8 9.3 און שפּעטער

מער קאָנטעקסט פֿאַר ערראָרס

סטאַרטינג מיט ווערסיע 9.3 פון די V8 דזשאַוואַסקריפּט מאָטאָר, דעוועלאָפּערס האָבן די אָפּציע צו לייגן אַ נייַ טיפּ פון אינפֿאָרמאַציע ווען זיי וואַרפן אַ פעליקייַט טעות. אַנשטאָט צו צושטעלן אַ איין אַרגומענט, איר וועט קענען צו לייגן אַ טיפּ פון טעות-טיפּ, אויך גערופן טעות גרונט, אַזוי אַז אַ האַנדלער פֿאַר קאַטשינג אַזאַ ערראָרס קענען בעסער באַשליסן פון וואו די טעות ערידזשאַנייטאַד.

צו זיין פּינטלעך, די טעות-קאָנסטרוקטאָר אַקסעפּץ אַ רגע אַפּשאַנאַל פּאַראַמעטער, וואָס איז אַ כייפעץ פון אָפּציעס, וווּ די פאַרמאָג "גרונט" קענען זיין געוויינט.

לאָמיר נעמען אַ קוק בייַ אַ בייַשפּיל.

/**
 * A simple demonstration how
 * the syntax will benefit from
 * the error-cause option in
 * new Errors.
 * 
 * Note that the example is greatly
 * simplified to focus on the 
 * relevant changes.
 */
async function processImage(props) {
  try {
    await minifyImage(props);
  } catch (err) {
    throw new Error('image-minification', { cause: err });
  }
  try {
    await uploadImage(props);
  } catch (err) {
    throw new Error('image-upload', { cause: err });
  }
  try {
    await cleanUpCache(props);
    await notifyUser(props);
  } catch (err) {
    throw new Error('post-processing', { cause: err });
  }
}

//
// ... later in our code ...
//

async function selectAndUploadImage(props){
  try {
    await processImage(props);
  } catch (err) {
    console.error(err.cause);
    
    switch(err) {
      case 'image-minification':
        // handle the minification error,
        // which is available by accessing
        // 'err.cause'.
        break;
      case 'image-upload':
        // ...
        break;
      case 'post-processing':
        // ...
        break;
    }
  }
}

מייַלע פון טעות ז

דער קלאָר נוץ פון ניצן טעות ז איז אויף די איין אַז איר טאָן ניט האָבן צו דעפינירן אַ מנהג טעות-קלאַס צו שעפּן ענלעך קאַסעס אין דיין קאָד. אויף די אנדערע האַנט, אויב איר האָבן אַ נאָרמאַל מעקאַניזאַם פֿאַר ערראָרס, עס אויך אַרבעט מיט דיבאַגינג מכשירים.

בנימצא מיט V8 ווערסיע 9.3 און שפּעטער

אין שרייבן, די ענדערונג איז נאָך נישט בארעכטיגט פֿאַר עפנטלעך באַניץ, ווייַל די קראַנט לעצט Node.js ווערסיע 16.4.2 ניצט די לעצט סטאַביל ווערסיע פון V8, וואָס איז 9.1. ווען Node.js וועט אָנהייבן ניצן ווערסיע 9.3, איך וועט דערהייַנטיקן דעם אַרטיקל אַקאָרדינגלי.

פֿאָרשלאָגן

פֿאַרבונדענע

נאָך-וואָרט

שפּראַכן