Php 使用try/catch&x27;我看不出有什么例外

Php 使用try/catch&x27;我看不出有什么例外,php,transmission,Php,Transmission,我有以下代码: <?php require 'vendor/autoload.php'; use Transmission\Exception; try{ $transmission = new Transmission\Client($hostname, $port, $username, $password, $httpClientBuilder = null); } catch (NetworkException $e) { $result = array("Err

我有以下代码:

<?php
require 'vendor/autoload.php';
use Transmission\Exception;

try{
    $transmission = new Transmission\Client($hostname, $port, $username, $password, $httpClientBuilder = null);
} catch (NetworkException $e) {
    $result = array("Error" => "Remote access is disabled");
}

您正在使用一个相对名称空间来定义catch语句中的异常
Transmission\exception\NetworkException$e

只需使用
NetworkException
或在前面添加反斜杠,即可使其成为完全限定的引用

编辑: 来自php文档的参考

编辑:澄清溶液

或者

try
{...}
catch (NetworkException $e)
{ ... }


您正在使用相对名称空间在catch语句中定义异常
Transmission\exception\NetworkException$e

只需使用
NetworkException
或在前面添加反斜杠,即可使其成为完全限定的引用

编辑: 来自php文档的参考

编辑:澄清溶液

或者

try
{...}
catch (NetworkException $e)
{ ... }


由于您没有用于
NetworkException
use
-语句,PHP将假定它应该从您当前操作的名称空间加载。(大概是
\
)要解决这个问题,只需添加一条语句,如
使用传输\Exception\NetworkException。这将告诉PHP您试图捕获的异常类型。

由于您没有
NetworkException
use
-语句,PHP将假定它应该从您当前操作的命名空间加载。(大概是
\
)要解决这个问题,只需添加一条语句,如
使用传输\Exception\NetworkException。这将告诉PHP您试图捕获的异常类型。

以下是我如何解决的:

<?php
require 'vendor/autoload.php';
try{
    $transmission = new Transmission\Client($hostname, $port, $username, $password, $httpClientBuilder = null);
} catch (Transmission\Exception\NetworkException $e) {
    $result = array("Error" => "Remote access is disabled");
}

以下是我如何解决的:

<?php
require 'vendor/autoload.php';
try{
    $transmission = new Transmission\Client($hostname, $port, $username, $password, $httpClientBuilder = null);
} catch (Transmission\Exception\NetworkException $e) {
    $result = array("Error" => "Remote access is disabled");
}


您的代码也在名称空间中吗?我只有
需要“vendor/autoload.php”;使用传输\异常可能您试图在其他位置捕获异常?尝试在异常上替换NetworkException并检查。您的代码也在命名空间中吗?我只有
要求“vendor/autoload.php”;使用传输\异常可能您试图在其他位置捕获异常?尝试在异常上替换NetworkException并进行检查。您能准确显示我需要放置的内容吗?我使用了
}catch(\NetworkException$e){
但仍然是相同的错误谢谢,我尝试了这两种方法,但不幸的是仍然得到相同的错误error@executable如果您直接在“try”块中抛出异常,请使用
抛出新的NetworkException(“test”,400)
它被捕获了吗?我之所以这样问,是因为如果我添加
抛出新的NetworkException(“test”,400);
中尝试
阻塞并捕获
}catch(\NetworkException$e),可能由于生成实例的方式(
new static(…)
)而发生了意想不到的事情{
我有以下错误
致命错误:未捕获传输\Exception\NetworkException:test in path/to/my/file.php:19堆栈跟踪:{0{main}在/path/to/my/file.php第19行
@executable删除catch语句中NetworkException之前的``你能准确显示我需要放什么吗?我使用了
}catch(\NetworkException$e){
但仍然是相同的错误谢谢,我尝试了这两种方法,但不幸的是仍然得到相同的错误error@executable如果您直接在“try”块中抛出异常,请使用
抛出新的NetworkException(“test”,400)
它被捕获了吗?我之所以这样问,是因为如果我添加
抛出新的NetworkException(“test”,400);
中尝试
阻塞并捕获
}catch(\NetworkException$e),可能由于生成实例的方式(
new static(…)
)而发生了意想不到的事情{
我有以下错误
致命错误:未捕获传输\Exception\NetworkException:test in path/to/my/file.php:19堆栈跟踪:#0{main}在第19行的/path/to/my/file.php中抛出
@可执行文件在catch语句中删除NetworkException之前的“\\”,我添加了
使用传输\Exception\NetworkException;
并使用catch-like
}catch(NetworkException$e){
我仍然得到错误:(我添加了
use Transmission\Exception\NetworkException;
并使用catch-like
}catch(NetworkException$e){
我仍然得到错误:(
<?php
require 'vendor/autoload.php';
try{
    $transmission = new Transmission\Client($hostname, $port, $username, $password, $httpClientBuilder = null);
} catch (Transmission\Exception\NetworkException $e) {
    $result = array("Error" => "Remote access is disabled");
}