0

当我尝试使用此代码连接 Redis 服务器时,我没有任何问题测试服务器是否已启动。问题是当服务器关闭时。在那种情况下,我用经典的 Try/catch 解决了这个场景。我的问题是我想用“my_custom_exception”类来管理这个异常,它有更多有用的功能,而不是异常类。反正有做这个吗?我知道如何扩展 Exception 类,但在这种情况下是第三方库。

function show_status_redis_server(){
    try{
        $redis = RedisDB::fetch_instance();//this ...........................
    }catch(Exception $e){
        echo "Redis server is down"; 
    }
}
4

1 回答 1

2

正如@Mike 在他的评论中所说,这取决于您想在哪里使用该功能。最简单的事情是使用类在代码中处理它:

function show_status_redis_server(){
    try{
        $redis = RedisDB::fetch_instance();//this ...........................
    }catch(Exception $e){
        throw MyRedisException::createFromException($e); 

    }
}

或者

function show_status_redis_server(){
    try{
        $redis = RedisDB::fetch_instance();//this ...........................
    }catch(Exception $e){
        $re = MyRedisException::createFromException($e);
        // do stuff with $re here 

    }
}

Beynond,我可以想到两种方法......制作一个使用您正在使用的 redis 库但充当中间件的包装库 - 这样您就可以在库类中捕获通用异常,然后抛出任何您想要的。

第二种方法是只做一个自定义错误处理程序来捕获未捕获的异常 - 以某种方式检查它们是否有 redis,然后重新抛出自定义异常。但是,此时您必须让异常消失,直到执行结束,这并没有为您提供很多处理它们的选项,除非它只是格式化和输出消息。

于 2012-11-08T00:09:07.683 回答