Php 用户输入的异常与返回代码

Php 用户输入的异常与返回代码,php,exception,coding-style,return,Php,Exception,Coding Style,Return,我有一个函数如下所示: function do_something_to_db($db_object, $param1, $param2){ if (!isset($param1) || !isset($param2)){ // Let user know that user-supplied arguments are incorrect. } else { $db_object->do_some_call($param1, $param2

我有一个函数如下所示:

function do_something_to_db($db_object, $param1, $param2){
    if (!isset($param1) || !isset($param2)){
        // Let user know that user-supplied arguments are incorrect.
    } else {
        $db_object->do_some_call($param1, $param2);
        if ($db_object->is_last_call_success()){
            $valuable_number = $db_object->get_last_call_result();
            // Success: let user know information from database call.
        } else {
            // Let user know that database call failed.
        }
    }
}
因此,对于这三种情况中的每一种,我都需要沟通:

  • 函数是否成功或失败
  • 如果成功,则调用数据库数据
  • 如果失败,问题是什么

用返回码和常量或使用异常来表达这一点更清楚吗?还是有更好的选择?请在回答中关注可读性和可维护性

就我个人而言,我总是喜欢例外。。。更多地控制它们被捕获的位置,可以出于不同的目的抛出不同的异常;strops()是一个主要的例子,它通过返回false或0在许多开发人员中造成混乱。但是,您是否发现您的代码中乱放了大量样板异常代码?这就是我第一次尝试的结果。如果我测试的是错误的或不是错误的,我不会这么做;我发现使用异常通常更干净、更容易阅读,因为您可以设置错误代码和带有异常的(自定义)消息,您可以通过调用方法传递更多的信息;e、 g.读取文件时,“x字符y行的输入无效”。。。远比一个简单的错误状态有用;如果您想通过状态返回更详细的信息,那么不仅仅是
抛出新异常(“x char y行的无效输入”,5)
。。。对于异常,您还可以跟踪嵌套的异常。对于异常,对抛出异常的文件/行/跟踪堆栈的引用在捕获异常以进行调试时也会自动可用