![](/img/trans.png)
[英]Why console.log(super) in React Component constructor throw an Error?
[英]Incorrect error throw order inside of console.log?
這里的代碼是我實際上正在做的極其簡化的版本,請不要嘗試在其中尋找任何深層含義。 我定義這樣的自定義錯誤。
function CustomError(message) {
this.message = message;
this.stack = (new Error()).stack;
}
CustomError.prototype = Object.create(Error.prototype);
接下來,我創建一個僅具有一個目的的簡單函數,即拋出該錯誤。
function foo() {
throw new CustomError('custom error message');
}
現在,我創建了一個下一個函數,該函數將進入無限循環,檢查是否有任何錯誤,並在捕獲到除自定義錯誤之外的任何錯誤后立即終止(好吧,但應該不會)。
function bar() {
for (;;) {
try {
console.lg(foo());
} catch (error) {
if (error instanceof CustomError) {
console.log(error);
} else {
throw new Error(error);
}
}
}
}
bar();
console.lg(foo());
拼寫存在故意錯誤console.lg(foo());
這應該拋出不是CustomError
實例的throw new Error(error);
,從而throw new Error(error);
CustomError
行將導致程序崩潰。
而是在console.lg(foo());
內部的foo()
函數console.lg(foo());
執行並拋出CustomError
,循環將永遠繼續。
我有可能在這里犯一個愚蠢的錯誤,但是我看不到哪里。 所以我的問題是:為什么console.lg();
的內部console.lg();
顯然不是有效的代碼時卻未破壞程序而達到? 為何在“無效方法”錯誤之前引發CustomError
?
使用解釋器,對參數進行評估,然后再調用它們的外部函數(嘗試將其調用)。 在將其參數的函數調用首先解析為值之前,它不會查看外部函數調用的有效性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.