禁用警告'抛出的对象必须是异常的实例'

时间:2014-03-27 20:05:26

标签: phpstorm

我正在使用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。我不喜欢它,因为它显示整个项目到第一个目录无效。

有没有办法在不改变代码的情况下解决它?

5 个答案:

答案 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扩展;