teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

期待通りに動作しない try 文のコードを削除

2018/09/16 14:03

投稿

think49
think49

スコア18194

answer CHANGED
@@ -16,22 +16,9 @@
16
16
 
17
17
  reject と比較して無駄が多いので、お勧めはしません。
18
18
 
19
- ```JavaScript
20
- new Promise((resolve, reject) => {
21
- try {
22
- setTimeout(() => {
23
- throw new Error("例外テスト");
19
+ **(2018/09/16 23:03 編集)**
24
- }, 100);
25
- } catch (error) {
26
- throw error;
27
- }
28
- }).catch(error => {
20
+ 当初、try 文のコードを2つ記載していましたが、一つは期待通りの動作ではない事が発覚した為、削除しました(R.Mizukamiさん、ご指摘ありがとうございます)。
29
- console.log(error);
30
- });
31
- ```
32
21
 
33
- `setTimeout()` のコールバック関数内で `try-catch` を使う方法もあります。
34
-
35
22
  ```JavaScript
36
23
  new Promise((resolve, reject) => {
37
24
  setTimeout(() => {
@@ -46,7 +33,7 @@
46
33
  });
47
34
  ```
48
35
 
49
- いずれにても、自身で `throw` したエラーを `catch` するのは回りくどく、筋が良いとはいえません。
36
+ かし、自身で `throw` したエラーを `catch` するのは回りくどく、筋が良いとはいえません。
50
37
  強制終了を意図しているのなら、`return` 文が適切でしょう。
51
38
 
52
39
  ```JavaScript

2

try 文(2nd)

2018/09/16 14:03

投稿

think49
think49

スコア18194

answer CHANGED
@@ -30,6 +30,29 @@
30
30
  });
31
31
  ```
32
32
 
33
+ `setTimeout()` のコールバック関数内で `try-catch` を使う方法もあります。
34
+
35
+ ```JavaScript
36
+ new Promise((resolve, reject) => {
37
+ setTimeout(() => {
38
+ try {
39
+ throw new Error("例外テスト");
40
+ } catch (error) {
41
+ reject(error);
42
+ }
43
+ }, 100);
44
+ }).catch(error => {
45
+ console.log(error);
46
+ });
47
+ ```
48
+
49
+ いずれにしても、自身で `throw` したエラーを `catch` するのは回りくどく、筋が良いとはいえません。
50
+ 強制終了を意図しているのなら、`return` 文が適切でしょう。
51
+
52
+ ```JavaScript
53
+ return reject(new Error);
54
+ ```
55
+
33
56
  ### await 式
34
57
 
35
58
  > ```JavaScript

1

try 文

2018/09/16 06:41

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,4 +1,4 @@
1
- ### Promise
1
+ ### reject
2
2
 
3
3
  Promise の基本的な使い方を、下記リンク先を読んで学ぶ事をお勧めします。
4
4
 
@@ -12,8 +12,26 @@
12
12
  });
13
13
  ```
14
14
 
15
- ### await
15
+ ### try 文
16
16
 
17
+ reject と比較して無駄が多いので、お勧めはしません。
18
+
19
+ ```JavaScript
20
+ new Promise((resolve, reject) => {
21
+ try {
22
+ setTimeout(() => {
23
+ throw new Error("例外テスト");
24
+ }, 100);
25
+ } catch (error) {
26
+ throw error;
27
+ }
28
+ }).catch(error => {
29
+ console.log(error);
30
+ });
31
+ ```
32
+
33
+ ### await 式
34
+
17
35
  > ```JavaScript
18
36
  > await new Promise(() => { // SyntaxError: await is only valid in async function
19
37
  > ```