Baseline Widely available
throw
æã¯ãã¦ã¼ã¶ã¼å®ç¾©ã®ä¾å¤ãçºçããã¾ãã ç¾å¨ã®é¢æ°ã®å®è¡ã忢ãï¼throw
ã®å¾ã®æã¯å®è¡ããã¾ããï¼ãã³ã¼ã«ã¹ã¿ãã¯å
ã®æåã® catch
ãããã¯ã«å¶å¾¡ãç§»ãã¾ããå¼ã³åºãå
ã®é¢æ°ã« catch
ãããã¯ãåå¨ããªãå ´åã¯ãããã°ã©ã ãçµäºãã¾ãã
function getRectArea(width, height) {
if (isNaN(width) || isNaN(height)) {
throw new Error("Parameter is not a number!");
}
}
try {
getRectArea(3, "A");
} catch (e) {
console.error(e);
// Expected output: Error: Parameter is not a number!
}
æ§æ
expression
çºçãããä¾å¤ã®å¼ã§ãã
throw
æã使ç¨ãã¦ä¾å¤ãçºçããããã¨ãã§ãã¾ããä¾å¤ãçºçãããã¨ãã¯ã expression
ã§ä¾å¤ã®å¤ãæå®ãã¾ãã以ä¸ã®ãããããä¾å¤ãçºçããã¾ãã
throw "Error2"; // æååå¤ã§ããä¾å¤ãçæãã¾ã
throw 42; // å¤ 42 ã§ããä¾å¤ãçæãã¾ã
throw true; // å¤ true ã§ããä¾å¤ãçæãã¾ã
throw new Error("Required"); // Required ã¨ããã¡ãã»ã¼ã¸ãæã£ãã¨ã©ã¼ãªãã¸ã§ã¯ããçæãã¾ã
ã¾ããthrow
æã¯èªåã»ãã³ãã³æ¿å
¥ (ASI)ã®å½±é¿ãåãããã¨ã«æ³¨æãã¦ãã ãããthrow
ãã¼ã¯ã¼ãã¨å¼ã®éã«æ¹è¡ã¯è¨±ããã¦ãã¾ããã
ä¾å¤ãæ´¾çãããã¨ãã«ãªãã¸ã§ã¯ããæå®ãããã¨ãã§ãã¾ããããããã°ã catch
ãããã¯ã®ä¸ã§ãã®ãªãã¸ã§ã¯ãã®ããããã£ãåç
§ã§ãã¾ããæ¬¡ã®ä¾ã¯ã UserException
åã®ãªãã¸ã§ã¯ããçæããããã throw
æã®ä¸ã§ä½¿ã£ã¦ãã¾ãã
function UserException(message) {
this.message = message;
this.name = "UserException";
}
function getMonthName(mo) {
mo--; // é
åã®æ·»åã®ããã«æã®æ°ã調æ´ãã (1 = Jan, 12 = Dec)
const months = [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
];
if (months[mo] !== undefined) {
return months[mo];
} else {
throw new UserException("InvalidMonthNo");
}
}
let monthName;
try {
// 試ã¿ãæ
const myMonth = 15; // 15 ã¯ç¯å²å¤ã§ãããä¾å¤ãçºçãã
monthName = getMonthName(myMonth);
} catch (e) {
monthName = "unknown";
console.error(e.message, e.name); // ã¨ã©ã¼ãã³ãã©ã¼ã«ä¾å¤ãªãã¸ã§ã¯ããæ¸¡ã
}
ãªãã¸ã§ã¯ãã§ä¾å¤ãçºçãããä»ã®ä¾
次ã®ä¾ã§ã¯å
¥åæååã§ã¢ã¡ãªã«ã®éµä¾¿çªå·ã§ãããã©ããããã¹ããã¾ããéµä¾¿çªå·ãç¡å¹ãªæ¸å¼ã使ã£ã¦ããå ´åã¯ã throw æã§ ZipCodeFormatException
åã®ãªãã¸ã§ã¯ããçæãã¦ä¾å¤ãçºçããã¾ãã
/*
* ZipCode ãªãã¸ã§ã¯ããçæãã¾ãã
*
* éµä¾¿çªå·ã¨ãã¦åãå
¥ããããæ¸å¼ã¯æ¬¡ã®ã¨ããã§ãã
* 12345
* 12345-6789
* 123456789
* 12345 6789
*
* ãã ZipCode ã³ã³ã¹ãã©ã¯ã¿ã¼ã«æ¸¡ããã弿°ãããããã®ãã¿ã¼ã³ã®
* ãã¡ã®ã©ãã«ãä¸è´ããªãã®ã§ããã°ãä¾å¤ãçºçãã¾ãã
*/
class ZipCode {
static pattern = /[0-9]{5}([- ]?[0-9]{4})?/;
constructor(zip) {
zip = String(zip);
const match = zip.match(ZipCode.pattern);
if (!match) {
throw new ZipCodeFormatException(zip);
}
// éµä¾¿çªå·ã®å¤ã¯æååä¸ã§æåã«ä¸è´ããé¨åã§ãã
this.value = match[0];
}
valueOf() {
return this.value;
}
toString() {
return this.value;
}
}
class ZipCodeFormatException extends Error {
constructor(zip) {
super(`${zip} does not conform to the expected format for a zip code`);
}
}
/*
* ããã¯ãUS ã®ä½æã®ããã®ã¢ãã¬ã¹ãã¼ã¿ãæ¤è¨¼ããã¹ã¯ãªããã§
* 使ãããããããã¾ããã
*/
const ZIPCODE_INVALID = -1;
const ZIPCODE_UNKNOWN_ERROR = -2;
function verifyZipCode(z) {
try {
z = new ZipCode(z);
} catch (e) {
const isInvalidCode = e instanceof ZipCodeFormatException;
return isInvalidCode ? ZIPCODE_INVALID : ZIPCODE_UNKNOWN_ERROR;
}
return z;
}
a = verifyZipCode(95060); // 95060 ãè¿ãã¾ã
b = verifyZipCode(9560); // -1 ãè¿ãã¾ã
c = verifyZipCode("a"); // -1 ãè¿ãã¾ã
d = verifyZipCode("95060"); // 95060 ãè¿ãã¾ã
e = verifyZipCode("95060 1234"); // 95060 1234 ãè¿ãã¾ã
ä¾å¤ãåçºçããã
ä¾å¤ãææããå¾ããã®ä¾å¤ãå度çºçãããããã« throw
ã使ããã¨ãã§ãã¾ããæ¬¡ã®ä¾ã§ã¯ãæ°å¤ã§ããä¾å¤ãææãããããã®å¤ã 50 ãè¶
ããã®ãªãããããæ¹ãã¦çºçããã¾ããæ¹ãã¦çºçããä¾å¤ã¯ãå©ç¨è
ããããããã«ãå²ãã§ãã颿°ã¾ãã¯æä¸ä½ã«ãããã¾ã§ä¼æãã¾ãã
try {
throw n; // æ°å¤ã§ããä¾å¤ãçºçããã
} catch (e) {
if (e <= 50) {
// 1 ãã 50 ã®ä¾å¤ãæä½ããããã®æ
} else {
// ãã®ä¾å¤ãæä½ã§ããªãã®ã§ãå度çºçããã
throw e;
}
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4