将唯一错误与其他错误分开
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' }
我有一个 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' }