{
class MyError extends Error {
constructor(msg) {
super(msg);
this.name = "MyError";
}
}
class OtherError extends Error {
constructor(msg) {
super(msg);
this.name = "OtherError";
}
}
function test(type) {
try {
if (type === 1) throw new MyError("这是 MyError");
if (type === 2) throw new OtherError("这是 OtherError");
throw new Error("这是普通 Error");
} catch (e) {
if (e instanceof MyError) {
console.log("捕获到了 MyError: " + e.message);
} else if (e instanceof OtherError) {
console.log("捕获到了 OtherError: " + e.message);
} else {
console.log("捕获到了普通 Error: " + e.message);
}
}
}
test(1);
test(2);
test(3);
}
{
function f() {
try {
console.log(0);
throw "bogus";
} catch (e) {
console.log(1);
return true;
console.log(2); } finally {
console.log(3);
return false; console.log(4); }
console.log(5); }
console.log(f()); }
{
function f() {
try {
throw "bogus";
} catch (e) {
console.log("捕获内部的“bogus”");
throw e;
} finally {
return false; }
}
try {
console.log(f());
} catch (e) {
console.log("捕获外部的“bogus”");
}
}