Выборочный отлов исключений. Утверждения.

by Artem

JavaScript

'use strict';

function AssertionFailed(message) {
  this.message = message;
  this.stack = (new Error()).stack;
}
AssertionFailed.prototype = Object.create(Error.prototype);
AssertionFailed.prototype.name = 'AssertionFailed';

function assert(test, message) {
  if (!test) {
    throw new AssertionFailed(message);
  }
}

try {
  assert(4 === 5, 'Проверка не пройдена');
} catch (e) {
  if (e instanceof AssertionFailed) {
    alert(e);
  } else {
    throw e;
  }
}