@@ -26,24 +26,15 @@ public function __construct(
2626 }
2727
2828
29- public function convertException ( \ PDOException $ e ): Nette \ Database \ DriverException
29+ public static function determineExceptionClass ( int $ code , ? string $ sqlState , string $ message ): ? string
3030 {
31- $ code = $ e ->errorInfo [1 ] ?? null ;
32- if (in_array ($ code , [1216 , 1217 , 1451 , 1452 , 1701 ], strict: true )) {
33- return Nette \Database \ForeignKeyConstraintViolationException::from ($ e );
34-
35- } elseif (in_array ($ code , [1062 , 1557 , 1569 , 1586 ], strict: true )) {
36- return Nette \Database \UniqueConstraintViolationException::from ($ e );
37-
38- } elseif ($ code >= 2001 && $ code <= 2028 ) {
39- return Nette \Database \ConnectionException::from ($ e );
40-
41- } elseif (in_array ($ code , [1048 , 1121 , 1138 , 1171 , 1252 , 1263 , 1566 ], strict: true )) {
42- return Nette \Database \NotNullConstraintViolationException::from ($ e );
43-
44- } else {
45- return Nette \Database \DriverException::from ($ e );
46- }
31+ return match (true ) {
32+ in_array ($ code , [1216 , 1217 , 1451 , 1452 , 1701 ], strict: true ) => Nette \Database \ForeignKeyConstraintViolationException::class,
33+ in_array ($ code , [1062 , 1557 , 1569 , 1586 ], strict: true ) => Nette \Database \UniqueConstraintViolationException::class,
34+ $ code >= 2001 && $ code <= 2028 => Nette \Database \ConnectionException::class,
35+ in_array ($ code , [1048 , 1121 , 1138 , 1171 , 1252 , 1263 , 1566 ], strict: true ) => Nette \Database \NotNullConstraintViolationException::class,
36+ default => null ,
37+ };
4738 }
4839
4940
0 commit comments