Geniş Ekran Modu Otomatik Ekran Boyutu Font Boyutunu Azalt Font Boyutunu Azalt Font Boyutunu Normal Yap Yazdır

Excepiton

Exception türkçe anlamı istisna olan kelimedir. İstisnalar php'de hata yönetimini kolay, genişletilebilir, bakımı yapılabilir ve nesne yönelimli bir şekilde gerçekleştirilmesini sağlar

PHP 5 de başka dillerdeki gibi başkalık (exception) modeli vardır.

         Bir başkalık atılır ya da yakalanır.

         Her denemenin karşılığı olan en az bir yakalama bloğu vardır.    Birden çok yakalama bloğu değişik başkalık sınıflarını yakalamak için kullanılabilir. Normal çalışma (Başkalığın deneme bloğundan hiçbiri fırlatılmamışsa ya da fırlatılana uygun yakalama bloğu yoksa) çalışmaya sıralamadaki son yakalama bloğunun peşinden devam eder. Başkalıklar bir yakalama bloğunda fırlatılır (ya da yine fırlatılır).

Bir başkalık atıldıığında, o deyimi izleyen kod çalıştırılmaz ve PHP ilk uyumlu bloğu bulmaya çalışır. Eğer bir başkalık yakalamazsa, PHP kritik hatası "UncaughtExceptşon ..." üretilir. Eğer tutacı set_expection_handler() ile tanımlanmışsa bu olmaz.

Başkalığa fırlatma (atlama) örneği
 
<?php
 functioninverse($x) {
     if (!$x) {
     thrownewException('Sıfıra bölme.');
 }
else return 1/$x;
 }
try {
echoinverse(5) . "n";
 echoinverse(0) . "n";
}
catch (Exception $e) {
 echo 'Başkalık yakalandı: ', $e->getMessage(), "n";
}
// Çalışmaya devam
 echo 'Merhaba Dünya';
?>

Yukarıdaki örneğin çıktısı:

0.2 Başkalık yakalandı: Sıfıra bölme.

Merhaba Dünya

Başlığı Geliştirme:

Kullanıcı tanımlı başkalık sınıfı hazır - Başkalık sınıflarını arattırmakla tanımlarnır.

Hazır başkalık sınıfı örneği

<?php

class Exception
{
    protected $message = 'Belirsiz başkalık'; // başkalık mesajı
    protected $code = 0;             // kullanıcı tanımlı başkalık kodu
    protected $file;                 // başkalığın kaynak kodu
    protected $line;                 // başkalığın kaynak satırı

    function __construct($message = null, $code = 0);

    final function getMessage();     // başkalık mesajı
    final function getCode();        // başkalık kodu
    final function getFile();        // kaynak dosya adı
    final function getLine();        // kaynak satırı
    final function getTrace();       // backtrace() dizisi
    final function getTraceAsString();  // taramanın kalıplı yazı dizisi

    /* Overrideable */
    function __toString();           // görüntülemek için kalıplı yazı dizisi
}
?>
 

Eğer bir sınıf hazır-Başkalık sınıfını genişletirse ve yapıcıyı yeniden tanımlarsa, onun var olan tüm verileri doğru olarak atandığının bilinmesi için "parent::__construct()" çağırması önemle önerilir. nesne bir yazı dizisi gibi gösterildiğinde değiştirilmiş çıktı sağlamak için __toString() yöntemi atlanır.

  Başkalık sınıfını geliştirme

<?php
/**
 * Kullanıcı tanımlı başkalık sınıfı
 */

class MyException extends Exception
{
    // başkalığı yeniden tanımla öyle ki
    // mesaj seçimli olmasın
    public function __construct($message, $code = 0) {
        // bazı kodlar
        // herşeyin doğru atandığına emin olun
        parent::__construct($message, $code);
    }

    // nesnenin kullanıcı yazı dizisi gösterimi
    public function __toString() {
        return __CLASS__ . ": [{$this->code}]: {$this->message}n";
    }

    public function customFunction() {
        echo "Bu tür başkalık için kullanıcı işlevin";
    }
}


/**
 * Başkalığı denemek için bir sınıf yarat
 */

class TestException
{
    public $var;

    const THROW_NONE    = 0;
    const THROW_CUSTOM  = 1;
    const THROW_DEFAULT = 2;

    function __construct($avalue = self::THROW_NONE) {

        switch ($avalue) {
            case self::THROW_CUSTOM:
                // kullanıcı başkalığı fırlat
                throw new MyException('1 geçersiz parametredir', 5);
                break;

            case self::THROW_DEFAULT:
                // varsayılanı fırlat
                throw new Exception('2 parametre olarak geçersizdir', 6);
                break;

            default:
                // Başkalık yok, nesne yaratıldı
                $this->var = $avalue;
                break;
        }
    }
}


// Örnek 1
try {
    $o = new TestException(TestException::THROW_CUSTOM);
} catch (MyException $e) {      // yakalanır
    echo "Benim başkalığımı yakalaman", $e;
    $e->customFunction();
} catch (Exception $e) {        // Atlanır
    echo "Varsayılan Başkalığı Yakalan", $e;
}

// işleme devam
var_dump($o);
echo "nn";


// Örnek 2
try {
    $o = new TestException(TestException::THROW_DEFAULT);
} catch (MyException $e) {      // Bu tür uymadı
    echo "Benim başkalığımı yakalaman", $e;
    $e->customFunction();
} catch (Exception $e) {        // yakalanır
    echo "Varsayılan Başkalığı Yakalan", $e;
}

// işleme devam
var_dump($o);
echo "nn";


// Örnek 3
try {
    $o = new TestException(TestException::THROW_CUSTOM);
} catch (Exception $e) {        // yakalanır
    echo "Varsayılan Başkalığı Yakalan", $e;
}

// işleme devam
var_dump($o);
echo "nn";


// Örnek 4
try {
    $o = new TestException();
} catch (Exception $e) {        // atlandı, ibaşkalık yok
    echo "Varsayılan Başkalığı Yakalan", $e;
}

// işleme devam
var_dump($o);
echo "nn";
?>
 

Exception türkçe anlamı istisna olan kelimedir. İstisnalar PHP'de hata yönetimini kolay, genişletilebilir, bakımı yapılabilir ve nesne yönelimli bir şekilde gerçekleştirilmesini sağlar.

Basit bir örnekle anlatılması gerekirse;


<?php
try
{

$kullanici_adi=$_POST['kullanici_adi'];


$sifre =$_POST['sifre'];

    if($kullanici_adi !== "kullanıcıadim" and $sifre !== "sifrem")
    {
        throw new Exception("Lütfen yönetici adinizi ve parolanizi dogru giriniz.");
        exit();
    }
}

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

?>
 

Bu örnekte kullanıcı adı ve parola kontrolü yapılıyor. Girilen kullanıcı adında ve parolada hata olup olmadığı kontrol ediliyor.



İstisna tetiklendiği anda şu aşamalar gerçekleşir;

  • Varolan kod durumu kaydedilir.

  • Kod işletimi önceden tanımladan hata ayıklama bloğuna atlayacaktır.

  • Duruma göre , hata ayıklama sonunda , ya en son işletilen kod bloğuna yeniden dönerek devam edecek, yada hata ayıklama bloğunda belirtilen aşamadan devam edecektir.


Exception Sınıfının Metotları


getCode() Kodu yapılandırıcıya geçirildiği şekliyle döndürür.
getMessage() Mesajı yapılandırıcıya geçirildiği şekliyle döndürür.
getFile() İstisnanın fırlatıldığı kod dosyasına giden tam yolu döndürür.
getTrace() İstisnanın fırlatıldığı backtrace’i içeren bir dizi döndürür.
getTraceAsString() getTrace ile aynı bilgileri karakter katarı olarak döndürür.
toString() Yukarıdaki metotlardan alınan bütün bilgileri veren bir exception nesnesinin özelliklerini yansıtmanızı sağlar.Mesajınızın şeklini şemalini düzeltmenize yarar.
backtrace İstisna fırlatıldığı zaman hangi fonksiyonların çalışmakta olduğunu gösterir.

Kaynak : Burak Taş

Bu içerikle ilgili henüz herhangi bir yorum yapılmamıştır. Bu içerikle ilgili Yorumunuzu eklemek için burayı tıklayınız.

Php Dersleri

Xampp Kurulumu
Php,apache,mysql hepsini tek dosyayla kurulumu
Xampp Kurulumu
Xampp apache, mysql, php ve phpmyadmin için kolay ve basit kurulum sağlayan bir uygulamadır.
PHP kurulumu
Windows 7 Üzerine Apache, Mysql, Php ve NetBeans Kurulumu (WAMP)
PHP nedir?
HTML kodlarının arasına yerleştirilmiş php kodlarından ayrıştırıp işleyerek sonuçta saf HTML formatı...
Verileri doğrulamak için PHP ile filtreleme işleml...
Ziyaretçilerden gelen verilerin istediğimiz formata uygunluğunu kontrol etmeliyiz ki, güvenlik açığı...
Php Mysql to XML
Bu yapıyı geliştirerek mysql veritabanınızdaki datalarınızı xml standartlarına dönüştürebilirsiniz.
Utf8 İle Iso-8859-9 Dönüştürmek
Bu işlemde php nin mb_convert_encoding fonksiyonunu kullanıyoruz.
Php5 İle Xml Dosya Oluşturmak
İngilizce bir makaledir.
Php4 İle Xml Dosya Oluşturmak
İngilizce bir makaledir.
Php İle Excel Dosyası Oluşturmak
Genelde, herhangi bir biçimlendirme söz konusu olmadığında, veritabanındaki bir bilgiyi ya da başka ...
Curl(client Url Library Functions) Nedir?
Curl ile kullanıcı kontrolü nasıl yapılır?
Harici Dosya İnclude
İnclude kullanımı ve örnekler
Class İçerisinden Class Tanımlamak
İç içe klaslar oluşturmak
Php Regular Expression
İngilizce bir makaledir.
Mysql_fetch_object, Mysql_fetch_array, Mysql_fetch...
Mysql_fetch_object, mysql_fetch_array, mysql_fetch_row, mysql_fetch_assoc, mysql_result kullanımı...
Php İle Mysql Veritabanından Bilgi Çekme
Mysql_fetch_assoc, mysql_fetch_row, mysql_fetch_object, mysql_fetch_array ve mysql_result metodları
Mysql İle Veritabanı Bağlantı Fonksiyonları
Mysql_result, mysql_fetch_array, mysql_fetch_row, mysql_fetch_object
Phpde Exception İstisna Yönetimi
Phpde istisna kontrol ve yönetimi
Karar Kontrol Mekanizması
Php 5 ile gelen yeniliklerin başında hata kontrol mekanizmasında yapılan yenilik gelmektedir. Php 4'...
En iyi 25 php template motoru
Php tabanlı web siteleri dizayn ederken, php kodlarını html kodlar arasına gömeriz. Fakat gün gel...
WinBinder İncelenmesi
WinBinder indirmek ve yüklemek , WinBinder Yapısı Hakkında Bilgiler , WinBinder Örnekleri , WinBinde...
Oop - Nesne Yönelimli Programlama
Artık ister istemez her programcının bulaştığı bu teknik hakkında sayısız makale yazılmıştır bu güne...
Nesneye Yönelimli Php
Classlarla ilgili ingilizce bir makale
Basit Class Yapılarında Kullanılan Kelimeler
New, ::, __construct, __autoload kullanımları
Classlarda Kullanılan Özel Kelimeler
Public, private, protected, extends, _construct
$_sessıon
$_sessıon[] değişkeni o anki oturumla ilgili olan değişkenleri tutmakta görevli olan varsayılan olar...
$_FILES
Örnek kod ve açıklamalar
  • 1
  • 2

Ödev Gönder | İncelenmeyi Bekleyen Ödevler | Uygulama Resimleri | Uygulama Resmi Gönder | İnternet Üzerinden Sınav | Test Sorusu Gönder | Sınıf Karneleri | Anketler | Linkler
www.dijitalders.com

bilgidijitalders.com
Bu sayfalar en iyi 1024 x 768 ekran çözünürlüğünde görüntülenir.
Site içerikleri, site kullanıcıları tarafından yollanan içeriklerdir. Her hangi bir içeriğin lisanslı yahut şahsınıza ait olduğunu tarafımıza iletirseniz gerekli düzenlemeyi yapacağız. Kullanılan içerikler, siteyi kullanan öğrenciler ve araştırmacılar için kolaylık sağlamak amacıyla oluşturulmuştur.
Sayfada HATA! Olduğunu Düşünüyorsanız | Sık Kullanılanlara Ekle | www.dijitalders.com'u Ana Sayfam Yap | Web Tasarımcıya e-Posta
Bu site 150,591 kişi tarafından ziyaret edilmiştir.