Ben birçok php kodları okudum, (burada da) uzun bir süre için bu aradı, ama yine de tatmin edici bir cevap bulamadım. Bu çok geniş bir konu gibi görünebilir, ama gerçekten birlikte sopalarla - son benim için. Lütfen yardımcı olur?
Bir php web BLL nesneler tarafından kullanılan ne DAL, PDO var ve onlar UI denir. something olur şimdi, PDO bir PDOException atar. Tabii UI katmanı PDOExceptions hakkında hiçbir şey bilmek zorunda değildir, bu nedenle BLL nesnenin onu yakalar. Ama şimdi ne olacak?
Ben okudum
- istisnalar gerçekten olağanüstü durumlar için vardır ve
- bir üst tabakalarında düşük seviye durumlar almak için değil sırayla alt katmanlardan istisnalar yeniden atar.
Bana (fonksiyon args dikkat etmeyiniz) benim sorunum açıklayalım:
class User
{
function signUp()
{
try
{
//executes a PDO query
//returns a code/flag/string hinting the status of the sign up:
//success, username taken, etc.
}
catch (PDOException $e)
{
//take the appropriate measure, e.g. a rollback
//DataAccessException gets all the information (e.g. message, stack
//trace) of PDOException, and maybe adds some other information too
//if not, it is like a "conversion" from PDOException to DAE
throw new DataAccessException();
}
}
}
//and in an upper layer
$user = new User();
try
{
$status = $user->signUp();
//display a message regarding the outcome of the operation
//if it was technically successful
}
catch (DataAccessException $e)
{
//a technical problem occurred
//log it, and display a friendly error message
//no other exception is thrown
}
Is this a right solution? When re-throwing the PDOException I don't think it would be appropriate to use exception chaining (as this would only make debugging information redundant; DataAccessException gets everything, including the full stack trace from PDOException).
Şimdiden teşekkürler.