Bu durum yakalamak ve komut dosyası yürütülmesine devam etmek mümkün mü?
Tabii, sadece yürütülmesine devam etmek istiyor istisna yakalamak ...
try
{
SomeOperation();
}
catch (SomeException $e)
{
// do nothing... php will ignore and continue
}
Tabii ki bu sessizce çok önemli bir hata ne olabilir bırakarak sorunu var. SomeOperation () başarısız neden olabilir başka, ince sorunları anlamaya zor, ama sessizce durum bırakın eğer asla bilemez.
Evet, ama bunu yürütmek istediğini bağlıdır:
Örneğin
try {
a();
b();
}
catch($e){}
c();
c() her zaman çalıştırılır. a() bir istisna atar Ama, eğer b() olup not idam.
Only put the stuff in to the try block that is depended on each other. Örneğin b depends on some result of a it makes no sense to put b after the try-catch block.
Sure:
try {
throw new Exception('Something bad');
} catch (Exception $e) {
// Do nothing
}
Sen Exceptions üzerine PHP belgelerin bir okudum gitmek isteyebilirsiniz.
Evet.
try {
Somecode();
catch (Exception $e) {
// handle or ignore exception here.
}
ancak bu php de hata kodları php oop ilkel vardı önce gelen, istisnalar bir miras holdover ayırmak vardır unutmayın. Çoğu kütüphane yerleşikleri hala hata kodları değil, istisnalar yükseltmek. Bir hata kodu göz ardı etmek @ öneki işlevini çağırır:
@myfunction();
Bu konuda başka bir açı işleme kodu, bir atma değil, bir özel durum dönüyor.
Ben yazıyorum bir çiftleşmiş çerçeve ile bunu yapmak için gerekli. Kullanıcı veri bulunmayan bir özellik erişmeye çalışırsa, ben yerine onu atarak daha derin işleme fonksiyonu içinde return hata.
Ardından, çağrı kodu, I) (yakalamak için deneyin () neden bu hatayı döndü atmak, ya da sadece devam etmek için karar verebilirsiniz:
// process the template
try
{
// this function will pass back a value, or a TemplateExecption if invalid
$result = $this->process($value);
// if the result is an error, choose what to do with it
if($result instanceof TemplateExecption)
{
if(DEBUGGING == TRUE)
{
throw($result); // throw the original error
}
else
{
$result = NULL; // ignore the error
}
}
}
// catch TemplateExceptions
catch(TemplateException $e)
{
// handle template exceptions
}
// catch normal PHP Exceptions
catch(Exception $e)
{
// handle normal exceptions
}
// if we get here, $result was valid, or ignored
return $result;
Bunun sonucu bu üst atıldı rağmen, ben hala orijinal hata bağlamını olsun.
Başka bir seçenek) özel bir NullObject veya UnknownProperty nesneyi döndürmek ve (yakalamak gezi için karar vermeden önce bu karşılaştırma için olabilir, ama sen gibi yeniden atmak hataları zaten, ve belki sen genel yapısının kontrolü tamamen iseniz, ben Bu try / yakalar devam edememe sorunu yuvarlak düzgün bir yol olduğunu düşünüyorum.