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

回答編集履歴

4

引用範囲修正

2016/11/24 07:33

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -32,8 +32,8 @@
32
32
  > VBAのGotoステートメントのように例外を分けたいのですが
33
33
  > ・・・略・・・
34
34
  > 投げたCodeで処理を分けるのって、一般的に見てアリですか?
35
+
35
36
  局所的なものなら問題ないんじゃないですかね?
36
-
37
37
  以下のように自分でExceptionを作成することもできます。(実行確認してませんのであくまで参考です。)
38
38
 
39
39
  ```PHP

3

セパレーター追加

2016/11/24 07:33

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -27,14 +27,14 @@
27
27
  // すべてのException(PDOExceptionも含む)をCatchしたときの例外処理
28
28
  }
29
29
  ```
30
-
30
+ ---
31
31
  > それとすみません、関連した質問として
32
32
  > VBAのGotoステートメントのように例外を分けたいのですが
33
33
  > ・・・略・・・
34
34
  > 投げたCodeで処理を分けるのって、一般的に見てアリですか?
35
35
  局所的なものなら問題ないんじゃないですかね?
36
36
 
37
- 以下のように自分でExceptionを作成することもできます。
37
+ 以下のように自分でExceptionを作成することもできます。(実行確認してませんのであくまで参考です。)
38
38
 
39
39
  ```PHP
40
40
  class SystemException extends Exception {

2

追記

2016/11/24 07:32

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -16,8 +16,6 @@
16
16
  }
17
17
  ```
18
18
 
19
-
20
-
21
19
  以下のように書くとすべてのExceptionをcatchします。
22
20
 
23
21
  ```PHP
@@ -28,4 +26,37 @@
28
26
  } catch (Exception $ex) {
29
27
  // すべてのException(PDOExceptionも含む)をCatchしたときの例外処理
30
28
  }
31
- ```
29
+ ```
30
+
31
+ > それとすみません、関連した質問として
32
+ > VBAのGotoステートメントのように例外を分けたいのですが
33
+ > ・・・略・・・
34
+ > 投げたCodeで処理を分けるのって、一般的に見てアリですか?
35
+ 局所的なものなら問題ないんじゃないですかね?
36
+
37
+ 以下のように自分でExceptionを作成することもできます。
38
+
39
+ ```PHP
40
+ class SystemException extends Exception {
41
+ public function __construct(){
42
+ parent::__construct('500 Internal Server Error');
43
+ }
44
+
45
+ class NotFoundException extends Exception {
46
+ public function __construct(){
47
+ parent::__construct('404 Not Found');
48
+ }
49
+
50
+ try {
51
+ if ($err1) throw new NotFondException("");
52
+ if ($err2) throw new NotFondException("");
53
+ if ($err3) throw new SysFondException("");
54
+ } catch (NotFoundException $nfex) {
55
+ header("HTTP/1.0 " . $nfex->getMessage());
56
+ exit();
57
+ } catch (SystemException $sysex) {
58
+ header("HTTP/1.0 " . $sysex->getMessage());
59
+ // エラーログ出力など
60
+ exit();
61
+ }
62
+ ```

1

コードないコメント追加

2016/11/24 07:29

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -7,8 +7,12 @@
7
7
  // なんかの処理
8
8
  } catch (PDOException $ex) {
9
9
  // PDOExceptionをCatchしたときの例外処理
10
+ // DB接続ができなかったのでDBのCloseなどは不要
10
11
  } catch (Exception $ex) {
11
12
  // ExceptionをCatchしたときの例外処理
13
+ // 「なんかの処理」でファイルオープンに失敗していた。
14
+ // PDOExceptionじゃ無かったのでDBへの接続はできている。
15
+ // DBのClose処理が必要
12
16
  }
13
17
  ```
14
18