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

回答編集履歴

4

補足

2017/09/01 15:44

投稿

退会済みユーザー
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

間違い修正

2017/09/01 15:44

投稿

退会済みユーザー
answer CHANGED
@@ -39,7 +39,7 @@
39
39
 
40
40
  4をコメントアウトすると new された PDOException のインスタンスが throw されますが、これ用の catch ブロックが存在しません。
41
41
 
42
- ですが、PDOException は RuntimeException クラスを継承し、さらに RuntimeException クラスは Exception クラスを継承しているため、結果的に 3番目の catch ブロックでキャッチされ、やはり、general が表示されます。
42
+ ですが、PDOException は RuntimeException クラスを継承し、さらに RuntimeException クラスは Exception クラスを継承しているため、結果的に 3番目の catch ブロックでキャッチされ、やはり、pdo が表示されます。
43
43
 
44
44
  このように、catch ブロックは try ブロック内で throw された Exception 毎にキャッチを行い、その際に new されたインスタンスを引数として取ります。
45
45
 

2

補足

2017/09/01 15:38

投稿

退会済みユーザー
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

誤植修正

2017/09/01 15:36

投稿

退会済みユーザー
answer CHANGED
@@ -41,6 +41,6 @@
41
41
 
42
42
  ですが、PDOException は RuntimeException クラスを継承し、さらに RuntimeException クラスは Exception クラスを継承しているため、結果的に 3番目の catch ブロックでキャッチされ、やはり、general が表示されます。
43
43
 
44
- このように、catch ブロックは try ブロック内で throw された Exception 毎にキャッチを行い、そ際に new されたインスタンスを引数として取ります。
44
+ このように、catch ブロックは try ブロック内で throw された Exception 毎にキャッチを行い、そ際に new されたインスタンスを引数として取ります。
45
45
 
46
46
  ですから、不正な実行結果の際に Exception(例外)を throw する関数等を try ブロック内に書いた場合、エラー処理が非常に簡単に行えるようになるわけです。