回答編集履歴
4
引用範囲修正
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
セパレーター追加
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
追記
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
コードないコメント追加
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
|
|