我正在使用phpStorm。我有以下由Kohana框架编写的代码:
throw HTTP_Exception::factory(404,
'The requested URL :uri was not found on this server.',
array(':uri' => $this->request->uri())
)->request($this->request);
问题是phpStorm认为这段代码无效并显示以下消息:the thrown object must be an instance of the exception
。我不喜欢它,因为它显示整个项目到第一个目录无效。
有没有办法在不改变代码的情况下解决它?
答案 0 :(得分:1)
你不能 - 这个错误是由Annotator产生的,而不是单独的检查(可以抑制个别检查)。
相对于http://youtrack.jetbrains.com/issue/WI-14734,这被标记为“无法修复”。您可以在那里添加评论,如果需要,甚至可以提交新票。
答案 1 :(得分:1)
似乎PhpStorm被“卡住”认为该项目是PHP7项目,即使您在“设置”中更改了PHP版本。我通过完全删除var T = [
['COUNTRY', 'GENDER', 'MARITAL STATUS', 'SALES'],
['India', 'Female', 'Single', 2400],
['India', 'Male', 'Single', 5200],
['India', 'Female', 'Married', 4300],
['India', 'Male', 'Married', 3200],
['England', 'Female', 'Single', 1600],
['England', 'Female', 'Married', 2000],
['England', 'Male', 'Single', 4800],
['England', 'Male', 'Married', 6400],
];
var A = ['GENDER', 'MARITAL STATUS', 'COUNTRY'];
var valueField = 'SALES';
// sortBy GENDER ascending
// MARITAL STATUS descending
// COUNTRY descending
var sortDirection = [1, -1, -1];
function find(arr, val){
for(var i = 0 ; i < arr.length; i++){
if(arr[i] === val) return i;
}
return -1;
}
function buildTreeString(
data, aggregateBy, sortDirection, valueField
) {
var i, record,
value, level,
groupBy = [],
result = [],
sums = [],
total = 0;
// get column index of valueField
valueField = find(data[0], valueField);
// get column indexes to groupBy
for(var i = 0; i < aggregateBy.length; i++) {
groupBy[i] = find(data[0], aggregateBy[i]);
}
// sort data
data = data.slice(1)
.sort(function(a, b) {
var i, compare = 0, column;
for(i = 0; i < groupBy.length && !compare; i++) {
column = groupBy[i];
compare = a[column] < b[column] ?
sortDirection[i] :
(a[column] > b[column] ?
-sortDirection[i] : 0);
}
return compare;
});
// loop over data rows, output tree nodes
for(i = 0; i < data.length; i++) {
record = data[i];
value = record[valueField];
total += value;
//loop over columns, starting from deepest level
for(level = groupBy.length - 1; level > -1; level--) {
sums[level] = (sums[level] || 0) + value;
if(i == data.length - 1 ||
record[groupBy[level]] != data[i + 1][groupBy[level]]) {
//output tree node
result.push(
Array(level + 2).join(' ') +
record[groupBy[level]] + ' ' +
sums[level]);
//reset level aggregation
sums[level] = 0;
}
}
}
result.push('Total ' + total);
result.reverse();
return result.join('\n');
}
console.log(
buildTreeString(T, A, sortDirection, valueField)
);
目录并重新打开目录作为新项目解决了这个问题。
答案 2 :(得分:1)
在处理PHP 7项目然后切换回PHP 5.6项目时遇到了同样的问题。在&#34;项目设置中 - &gt;语言与框架 - &gt; PHP - &gt; PHP语言水平&#34;我从PHP 5.6切换到PHP 5.5,错误消息消失了。然后我切换回PHP 5.6并且它没有再次弹出。
答案 3 :(得分:1)
在我的情况下(我正在 Laravel 框架上开发),您应该在扩展类 Exception 或 Throwable 之前添加斜杠。它对我有用。看下面的代码
class ProcessIncomplete extends \Exception {}
顺便说一句,我也在使用 PHPStorm ide
答案 4 :(得分:0)
我遇到相同的错误
您的Exception类必须从\Exception
开始扩展;
而不是从Exception
扩展;