将唯一错误与其他错误分开

separating unique error from the rest

我有一个 table,其中一列是 unique。所以当我插入一个新行时,如果该列的内容重复,它会在 catch(PDOException $e) 中给我一个错误。应该注意的是,我在 catch() 中也遇到了任何其他错误。现在我需要将 unique 错误与其他错误分开。我需要这样的东西:

try{
     // inserting
}

catch(PDOException $e){
   if ($e == 'unique error') {echo 'that is a unique error';}
   else { echo 'that is different error'}
}

所以我需要这样的条件:if ($e == 'unique error'){}。有条件吗?

异常是包含信息的对象。错误类型的消息应附加到该对象,因此您应该能够:

try {

} catch(PDOException $e) {
    echo $e->getMessage();
}

抛出异常时应定义异常消息。 如果你需要分开,你可以通过代码来完成:

try {

} catch(PDOException $e) {
    if($e->getCode() == $someVal) {

    } else if($e->getCode() == $someVal) {

    }
}

最好找出那些情况下的错误代码是什么,然后比较getCode()

需要注意的是检测unique错误,你应该使用这个条件:

if ((int) $e->getCode() === 23000) { echo 'unique error' }