← All results

Basic @throws compatibility checks

Group: Exceptions · Category: conventional · File: exceptions_throws_docblock.php · Kind: Style / opinionated (no runtime-safety impact)

References: - phpDocumentor @throws

Analyzer results

AnalyzerVersionResultDiagnostics
phan 6.0.11Phan 6.0.11 php-ast version 1.1.3 PHP version used to run Phan: 8.5.11 Pass

No diagnostics reported.

phpstan 2.3.5PHPStan - PHP Static Analysis Tool 2.3.5 Pass

No diagnostics reported.

psalm 6.20.9Psalm 6.20.9@f67170ac3c3b931f5088681e21d6c8babc601c08
next: 7.0.4
Pass

No diagnostics reported.

mago 1.59.0mago 1.59.0 Pass

No diagnostics reported.

mir 0.91.0mir 0.91.0 Pass

No diagnostics reported.

phpantom 0.11.1phpantom_lsp 0.11.1 Pass

No diagnostics reported.

intelephense 1.18.5intelephense 1.18.5 Pass

No diagnostics reported.

phpactor 2026.10.07.0Phpactor 2026.10.07.0 Pass

No diagnostics reported.

phpy 1.0.19490phpy 1.0.19490 Pass

No diagnostics reported.

qodana 262.11879.104PhpStorm 262.11879.104 Fail
exceptions_throws_docblock.php:8: Undefined class 'compatibility' [PhpUndefinedClassInspection]
Expectation diff
Line 8: Unexpected errors ["Undefined class 'compatibility' [PhpUndefinedClassInspection]"]
noverify 0.5.5NoVerify, version 0.5.5: built on: 2025.04.22 14:36:46 OS: r-kuchinskas arm64 Commit: 4774b82f8adc53fbef38f95e97af4b953b4d1529 Pass

No diagnostics reported.

steins 0.1.8steins 0.1.8 (2026-09-21 revision 76306a9) Pass

No diagnostics reported.

phpstan-strict 2.3.5PHPStan - PHP Static Analysis Tool 2.3.5 Pass

No diagnostics reported.

psalm-next 7.0.4Psalm 7.0.4@fa5b1f6e665cb743838ffd865b8fc96207f9409f Pass

No diagnostics reported.

Source

<?php

declare(strict_types=1);

namespace Conformance\Tests\ExceptionsThrowsDocblock;

/**
 * Basic @throws compatibility checks.
 *
 * References:
 * - phpDocumentor @throws
 *
 * @conformance-kind style
 */

final class CustomException extends \RuntimeException
{
}

/**
 * @throws CustomException
 */
function alwaysThrows(): never
{
    throw new CustomException('boom');
}

/**
 * @throws \RuntimeException
 */
function documentedAsRuntime(): void
{
    alwaysThrows();
}