回答編集履歴

3

try/catch を外すよりも、throw で明示的にエラーを外側に伝搬。

2025/01/16 16:57

投稿

teamikl
teamikl

スコア8791

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
- - try {
37
+ try {
38
38
  console.log("test1");
39
39
  const jsCode = `{{ code|safe }}`;
40
40
  eval(jsCode);
41
- - } catch (error) {
41
+ } catch (error) {
42
- - console.log("test2")
42
+ console.log("test2")
43
- - console.error('Error executing code:', error);
43
+ console.error('Error executing code:', error);
44
- - }
44
+ + throw error;
45
+ }
45
46
 
46
47
  ```

2

eval周りのtry/catch を外す箇所を追記

2025/01/16 15:28

投稿

teamikl
teamikl

スコア8791

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 テンプレートのデバッグ情報を追記

2025/01/16 05:25

投稿

teamikl
teamikl

スコア8791

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
+