-1

我得到了一个产生错误概率为 50:50 的代码。这一切都在一个类对象中完成。对象中的任何方法都可能产生错误。我该怎么做才能使方法堆栈深处的某个函数产生错误,以便可以将其返回给第一个运行的函数?

像这样: 1.调用function1 2.function1调用function2 3.function2调用function3 4.function3产生错误并将具有错误定义权的数组传递给function1

我知道异常是正确的(用 try-catch 块包裹一个函数),但我还不能让它在 3 个函数深堆栈中捕获异常。我怎么做?

4

3 回答 3

2

你试过什么?这很简单,真的:

<?php

function function1( ) {
    try {
        function2( );
    }
    catch( Exception $e ) {
        // Exception from function4 bubbles up.
    }
}

function function2( ) {
    function3( );
}

function function3( ) {
    function4( );
}

function function4( ) {
    throw new Exception( );
}
于 2012-09-13T13:39:46.227 回答
0

例外是这样做的正确方法。Catch Exception(普通类)是一种不好的做法。

您应该抛出具体/自定义异常。

查看http://php.net/manual/en/spl.exceptions.phpthrow并用更具体和具体的例外来改变你的

避免

 throw new Exception('foo');

反而

 throw new RuntimeException('foo');
于 2012-09-13T13:13:14.623 回答
-2

只需try在应该捕获异常并保持其他不变的级别使用。前任:

try{
function1();
}
catch(Exception e){
// bla bla
}

如前所述,异常会传播直到它们被捕获或崩溃:)。

于 2012-09-13T13:19:48.210 回答