回答編集履歴

2

追記

2019/02/10 05:49

投稿

退会済みユーザー
test CHANGED
@@ -85,3 +85,99 @@
85
85
  }
86
86
 
87
87
  ```
88
+
89
+
90
+
91
+ サンプル2
92
+
93
+
94
+
95
+ ```php
96
+
97
+ <?php
98
+
99
+
100
+
101
+ ini_set('display_error', 1);
102
+
103
+ error_reporting(E_ALL);
104
+
105
+
106
+
107
+ /**
108
+
109
+ * DB 接続
110
+
111
+ */
112
+
113
+ function connect()
114
+
115
+ {
116
+
117
+ try {
118
+
119
+ $dsn = 'mysql:host=localhost;dbname=database;charset=utf8mb4';
120
+
121
+ $username = 'root';
122
+
123
+ $passwd = 'password';
124
+
125
+ $pdo = new PDO($dsn, $username, $passwd);
126
+
127
+ $pdo->setAttribute(PDO_ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
128
+
129
+ return $pdo;
130
+
131
+ } catch (Exception $e) {
132
+
133
+ // (1)例外をそのままthrow
134
+
135
+ throw $e;
136
+
137
+ }
138
+
139
+ }
140
+
141
+
142
+
143
+ /**
144
+
145
+ * 更新処理
146
+
147
+ * @param type $id
148
+
149
+ * @param type $value
150
+
151
+ * @return type
152
+
153
+ */
154
+
155
+ function update($id, $value)
156
+
157
+ {
158
+
159
+ $pdo = connect();
160
+
161
+ $sql = 'update table set column = ? where id = ?';
162
+
163
+ $stmt = $pdo->prepare($sql);
164
+
165
+ return $stmt->execute([$value, $id]);
166
+
167
+ }
168
+
169
+
170
+
171
+ try {
172
+
173
+ update(1, 'test');
174
+
175
+ } catch (Exception $e) {
176
+
177
+ // (1)の例外も update() の例外もここでキャッチ可能
178
+
179
+ var_dump($e->getMessage());
180
+
181
+ }
182
+
183
+ ```

1

追記

2019/02/10 05:49

投稿

退会済みユーザー
test CHANGED
@@ -78,6 +78,8 @@
78
78
 
79
79
  } catch (Exception $e) {
80
80
 
81
+ // connect(), update() で発生した例外はここでキャッチできる
82
+
81
83
  var_dump($e->getMessage());
82
84
 
83
85
  }