1.2.631. Large Try Block¶
Try block should enclosing only the expression that may emit an exception.
When writing large blocks of code in a try, it becomes difficult to understand where the expression is coming from. Large blocks may also lead to catch multiples exceptions, with a long list of catch clause.
In particular, the catch clause resumes the execution without knowing where the try was interrupted : there are no indication of achievement, even partial. In fact, catching an exception signals a very dirty situation.
This analysis reports try blocks that are 5 lines or more. This threshold may be configured with the directive tryBlockMaxSize
. Catch clause, and finally are not considered here.
<?php
// try is one expression only
try {
$database->query($query);
} catch (DatabaseException $e) {
// process exception
}
// Too many expressions around the one that may actually emit the exception
try {
$SQL = build_query($arguments);
$database = new Database($dsn);
$database->setOption($options);
$statement = $database->prepareQuery($SQL);
$result = $statement->query($query);
} catch (DatabaseException $e) {
// process exception
}
?>
Name |
Default |
Type |
Description |
tryBlockMaxSize |
5 |
integer |
Maximal number of expressions in the try block. |
See also Exceptions.
1.2.631.1. Connex PHP features¶
1.2.631.1.1. Suggestions¶
Reduce the amount of code in the block, by moving it before and after
1.2.631.1.2. Specs¶
Short name |
Exceptions/LargeTryBlock |
Rulesets |
|
Exakat since |
2.1.5 |
PHP Version |
All |
Severity |
Minor |
Time To Fix |
Quick (30 mins) |
Precision |
Very high |
Available in |