回答編集履歴
4
補足
answer
CHANGED
@@ -62,7 +62,7 @@
|
|
62
62
|
なため、
|
63
63
|
|
64
64
|
```PHP
|
65
|
-
new SomeException("hogehage");
|
65
|
+
$e = new SomeException("hogehage");
|
66
66
|
```
|
67
67
|
|
68
68
|
のように new すると、第一引数の文字列が、そのインスタンスに対する
|
3
間違い修正
answer
CHANGED
@@ -39,7 +39,7 @@
|
|
39
39
|
|
40
40
|
4をコメントアウトすると new された PDOException のインスタンスが throw されますが、これ用の catch ブロックが存在しません。
|
41
41
|
|
42
|
-
ですが、PDOException は RuntimeException クラスを継承し、さらに RuntimeException クラスは Exception クラスを継承しているため、結果的に 3番目の catch ブロックでキャッチされ、やはり、
|
42
|
+
ですが、PDOException は RuntimeException クラスを継承し、さらに RuntimeException クラスは Exception クラスを継承しているため、結果的に 3番目の catch ブロックでキャッチされ、やはり、pdo が表示されます。
|
43
43
|
|
44
44
|
このように、catch ブロックは try ブロック内で throw された Exception 毎にキャッチを行い、その際に new されたインスタンスを引数として取ります。
|
45
45
|
|
2
補足
answer
CHANGED
@@ -43,4 +43,32 @@
|
|
43
43
|
|
44
44
|
このように、catch ブロックは try ブロック内で throw された Exception 毎にキャッチを行い、その際に new されたインスタンスを引数として取ります。
|
45
45
|
|
46
|
-
ですから、不正な実行結果の際に Exception(例外)を throw する関数等を try ブロック内に書いた場合、エラー処理が非常に簡単に行えるようになるわけです。
|
46
|
+
ですから、不正な実行結果の際に Exception(例外)を throw する関数等を try ブロック内に書いた場合、エラー処理が非常に簡単に行えるようになるわけです。
|
47
|
+
|
48
|
+
尚、全ての例外の基底クラス Exception クラスでは
|
49
|
+
http://php.net/manual/ja/class.exception.php
|
50
|
+
|
51
|
+
```PHP
|
52
|
+
/* プロパティ */
|
53
|
+
protected string $message ;
|
54
|
+
protected int $code ;
|
55
|
+
protected string $file ;
|
56
|
+
protected int $line ;
|
57
|
+
```
|
58
|
+
|
59
|
+
となっていて、そのコンストラクタは
|
60
|
+
http://php.net/manual/ja/exception.construct.php
|
61
|
+
|
62
|
+
なため、
|
63
|
+
|
64
|
+
```PHP
|
65
|
+
new SomeException("hogehage");
|
66
|
+
```
|
67
|
+
|
68
|
+
のように new すると、第一引数の文字列が、そのインスタンスに対する
|
69
|
+
|
70
|
+
```PHP
|
71
|
+
$e->getMessage();
|
72
|
+
```
|
73
|
+
|
74
|
+
という getMessage() メンバメソッドで取得できるというわけです。
|
1
誤植修正
answer
CHANGED
@@ -41,6 +41,6 @@
|
|
41
41
|
|
42
42
|
ですが、PDOException は RuntimeException クラスを継承し、さらに RuntimeException クラスは Exception クラスを継承しているため、結果的に 3番目の catch ブロックでキャッチされ、やはり、general が表示されます。
|
43
43
|
|
44
|
-
このように、catch ブロックは try ブロック内で throw された Exception 毎にキャッチを行い、そ
|
44
|
+
このように、catch ブロックは try ブロック内で throw された Exception 毎にキャッチを行い、その際に new されたインスタンスを引数として取ります。
|
45
45
|
|
46
46
|
ですから、不正な実行結果の際に Exception(例外)を throw する関数等を try ブロック内に書いた場合、エラー処理が非常に簡単に行えるようになるわけです。
|