JS OOP: 29. Error class

by istiq20

HTML

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Error handling: membuat class error manual</title>
  </head>
  <body>
    <script>
      // class ValidationError
      class ValidationError extends Error {
        constructor(message, field) {
          super(message);
          this.field = field;
        }
      }

      // menggunakan class ValidationError
      class MathUtil {
        static sum(...numbers) {
          if (numbers.length === 0) {
            throw new ValidationError("Total parameter harus lebih dari 0", "numbers");
          }

          let total = 0;
          for (const number of numbers) {
            total += number;
          }
          return total;
        }
      }

      // error handling
      try {
        console.info(MathUtil.sum());
        console.info("Eko");
      } catch (error) {
        if (error instanceof ValidationError) {
          console.info(`Terjadi error di field ${error.field} dengan error ${error.message}`);
        } else {
          console.info(`Terjadi error : ${error.message}`);
        }
      } finally {
        console.info("Program selesai"); 
      }

      console.info("Khannedy");
      
    </script>
  </body>
</html>