回答編集履歴
3
try/catch を外すよりも、throw で明示的にエラーを外側に伝搬。
test
CHANGED
@@ -27,20 +27,21 @@
|
|
27
27
|
```
|
28
28
|
|
29
29
|
----
|
30
|
-
追記2 eval周りのtry/catch を外す
|
30
|
+
追記2 ~~eval周りのtry/catch を外す~~ ⇒ throw で外部へエラーを伝搬
|
31
31
|
|
32
32
|
内側のtry/catch に例外が捕捉され、
|
33
33
|
外部のaddEventListenerで登録したエラーハンドラに伝搬していない。
|
34
34
|
|
35
35
|
```diff
|
36
36
|
|
37
|
-
|
37
|
+
try {
|
38
38
|
console.log("test1");
|
39
39
|
const jsCode = `{{ code|safe }}`;
|
40
40
|
eval(jsCode);
|
41
|
-
|
41
|
+
} catch (error) {
|
42
|
-
|
42
|
+
console.log("test2")
|
43
|
-
|
43
|
+
console.error('Error executing code:', error);
|
44
|
-
|
44
|
+
+ throw error;
|
45
|
+
}
|
45
46
|
|
46
47
|
```
|
2
eval周りのtry/catch を外す箇所を追記
test
CHANGED
@@ -26,4 +26,21 @@
|
|
26
26
|
app.jinja_env.undefined = StrictUndefined # TODO: 実際には、デバッグ時のみ有効にする。
|
27
27
|
```
|
28
28
|
|
29
|
+
----
|
30
|
+
追記2 eval周りのtry/catch を外す
|
29
31
|
|
32
|
+
内側のtry/catch に例外が捕捉され、
|
33
|
+
外部のaddEventListenerで登録したエラーハンドラに伝搬していない。
|
34
|
+
|
35
|
+
```diff
|
36
|
+
|
37
|
+
- try {
|
38
|
+
console.log("test1");
|
39
|
+
const jsCode = `{{ code|safe }}`;
|
40
|
+
eval(jsCode);
|
41
|
+
- } catch (error) {
|
42
|
+
- console.log("test2")
|
43
|
+
- console.error('Error executing code:', error);
|
44
|
+
- }
|
45
|
+
|
46
|
+
```
|
1
jinja2 テンプレートのデバッグ情報を追記
test
CHANGED
@@ -17,3 +17,13 @@
|
|
17
17
|
(デバッグでいろいろ試してる場合を想定)
|
18
18
|
|
19
19
|
|
20
|
+
----
|
21
|
+
追記
|
22
|
+
|
23
|
+
後者のテンプレート内の未定義変数に関しては、jinja2 テンプレートの設定で検出可能です。
|
24
|
+
```python
|
25
|
+
from jinja2 import StrictUndefined
|
26
|
+
app.jinja_env.undefined = StrictUndefined # TODO: 実際には、デバッグ時のみ有効にする。
|
27
|
+
```
|
28
|
+
|
29
|
+
|