PowerShell

PowerShell Try Catch Finally Kullanımı

PowerShell Hata Yakalama, PowerShell İstisna Yönetimi, PowerShell Exception Handling, PowerShell Exception Management, PowerShell Hata Yönetimi, PowerShell Trap Kullanımı

PowerShell Try Catch Finally Kullanımı

Powershell kod bloklarındaki hataların bulunup işlenmesi, hataya göre işlem yapılması gerektiğinde, PowerShell Try, Catch ve Finally blokları kullanılır.

PowerShell hataları bir şekilde işleyemediğinde çalıştırmayı da durdurur. PowerShell bir şekilde hatayı işlemezse, PowerShell komutu veya script geçerli ardışık düzen kullanarak çalıştırmayı da durdurur. C# gibi diğer dillerde, bu hatalar istisna (exception) olarak adlandırılır.

PowerShell Try Kullanımı

Try bloğu, script dosyasında PowerShell de hataların izlemek istenilen bölümüdür. Bu blokta bir hata oluştuğunda, ilk önce otomatik olarak $Error değişkeninde saklanır. Bundan sonra, PowerShell işlemek için Catch bloğunu arar.

Try Sözdizimi

Aşağıda Try sözdizimi gösterilmektedir:

Try
{
    Kod-1
    Kod-2
    Kod-N
}

PowerShell Catch Kullanımı

Catch bloğu, komut dosyasında Try bloğu tarafından oluşturulan hataları işleyen bölümdür. Catch bloğu tarafından hangi hata türünün işleneceğini tanımlanabilir. Bir hata türü, Microsoft .NET framework istisnasıdır. Bir Try bloğunun farklı hata türleri için birden fazla catch bloğu olabilir. Catch bloğu yerine, hataları işlemek için Trap bloğu da kullanılabilir.

Catch Sözdizimi

Aşağıda PowerShell catch bloğunun sözdizimi gösterilmektedir:

Catch [[<error tip>][',' <error tip>]*]
{
    Kod-1
    Kod-2
    Kod-N
}

Hata yani error türleri köşeli parantezler içinde görülebilir. En dıştaki parantez elemanın isteğe bağlı olduğunu gösterir. Yukarıdaki sözdiziminde, catch anahtar sözcüğünü, isteğe bağlı bir hata türü listesi ve bir komut listesi izler. Herhangi bir catch yakalandığında, catch bloğundaki kodlar yürütülür.

PowerShell Finally Kullanımı

PowerShell finally bloğu, catch bloklarından sonra tanımlanır ve script içinde hata olsa da olmasada çalıştırılacak olan bloktur.

Finally Sözdizimi

Aşağıda finally bloğu sözdizimi gösterilmektedir:

Finally
{
    Kod-1
    Kod-2
    Kod-N
}

Örnekler

Örnek 1:

Aşağıdaki örnek, Try bloğuyla yalnızca bir Catch bloğu kullanır:

Try  
{  
    Get-ChildItem  
}  
Catch  
{  
    Write-Host -ForegroundColor DarkRed -BackgroundColor White "Hata Oluştu!" 
}

Bu örnekte, Try bloğundaki komut doğrudur. Bu nedenle herhangi bir hata yoktur ve aşağıdaki çıktıyı görüntüler:

    Directory: C:\Users\ahmet


Mode                LastWriteTime         Length Name                                                                                                                                
----                -------------         ------ ----                                                                                                                                                                                                                                                         
d-r---       12/22/2019     16:57                3D Objects                                                                                                                          
d-r---       12/22/2019     16:57                Contacts                                                                                                                            
d-r---         2/8/2020     14:28                Desktop                                                                                                                             
d-r---        1/31/2020     15:07                Documents                                                                                                                           
d-r---         2/8/2020     14:26                Downloads                                                                                                                           
d-r---       12/22/2019     16:57                Favorites                                                                                                                           
d-r---       12/22/2019     16:57                Links                                                                                                                               
d-r---       12/22/2019     16:57                Music                                                                                                                               
d-r---        1/19/2020     13:22                OneDrive                                                                                                                                                                                                                                                      
d-r---         1/1/2020     11:48                Pictures                                                                                                                            
d-r---       12/22/2019     16:57                Saved Games                                                                                                                         
d-r---       12/22/2019     16:57                Searches                                                                                                                            
d-r---       12/22/2019     18:56                Videos

Örnek 2:

Aşağıdaki örnek, Try bloğuyla yalnızca bir Catch bloğu kullanır:

Try
{
    Get-ChildItem
}
Catch
{
    Write-Host -ForegroundColor DarkRed -BackgroundColor White "Hata Oluştu!"
}

Bu örnekte, komut try bloğundaki komut yanlış ve try bloğunda bir hata oluşuyor. Bu nedenle, çıktıyı catch bloğundan alınacaktır:

Hata Oluştu!

Örnek 3:

PopwerShell Catch kullanımı anlatılırken birden fazla Error tipi ve buna bağlı Catch bloğu tanımlanabileceği söylenmişti. Aşağıdaki örnekte Try, Catch, Finally kullanımı özetlenmiştir:

Try  
{  
    Get-Child  
}  
Catch [System.Management.Automation.CommandNotFoundException]
{  
    Write-Host -ForegroundColor DarkRed -BackgroundColor White "Komut Bulunamadı!" 
}
Catch  
{  
    Write-Host -ForegroundColor DarkRed -BackgroundColor White "Başka Hatalarda Oldu!" 
} 
Finally
{
    Write-Host -ForegroundColor DarkBlue -BackgroundColor White "Çalışma Tamamlandı."
}

Aşağıdaki şekilde çıktı alınacaktır:

PS C:\Users\ahmet> 
Try  
{  
    Get-Child  
}  
Catch [System.Management.Automation.CommandNotFoundException]
{  
    Write-Host -ForegroundColor DarkRed -BackgroundColor White "Komut Bulunamadı!" 
}
Catch  
{  
    Write-Host -ForegroundColor DarkRed -BackgroundColor White "Başka Hatalarda Oldu!" 
} 
Finally
{
    Write-Host -ForegroundColor DarkBlue -BackgroundColor White "Çalışma Tamamlandı."
}

Komut Bulunamadı!
Çalışma Tamamlandı.

PS C:\Users\ahmet>

PowerShell Trap Kullanımı

PowerShell Trap anahtar sözcüğünü kullanarak, yine bir hata oluştuğunda çalışacak bir komut – ifade listesi belirlenebilir. PowerShell trap ifadeleri, hataları işler ve durdurmak yerine script veya komutun yürütülmesine izin verir.

PowerShell Trap anahtar kelimesinin sözdizimi aşağıdadır:

Trap [[<error tipi>]] 
{
    <komut listesi>
}

PowerShell Trap Kullanımı Örnekler

Örnek 1:

Aşağıdaki fonksiyonda trap ile tüm hataların yakalanması gösterilmiştir:

function Get-Eth {
    Trap {Write-Output "Bir hata oluştu!"}

    Get-NetAdapters
}
Çıktı:
Bir hata oluştu!

Örnek 2:

Ayrıca $_ kullanarak trap tetikleyen hata görüntülenebilir:

function Get-Eth {
    Trap {Write-Output "Bir hata oluştu!: $_"}

    Get-NetAdapters
}

Get-Eth
Çıktı:
Bir hata oluştu!: The term 'Get-NetAdapters' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Örnek 3:

Aşağıdaki örneklerde spesifik hataların yakalanması gösterilmiştir:

function Get-Eth {
    Trap {Write-Output "Bilinmeyen Bir Hata Oluştu: $_"}
    Trap [System.Management.Automation.CommandNotFoundException]{
        Write-Output "Komut Bulunamadı: $_"}

    Get-NetAdapters
}

Get-Eth
Çıktı:
Komut Bulunamadı: The term 'Get-NetAdapters' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
function Get-Eth {
    Trap {Write-Output "Bilinmeyen Bir Hata Oluştu: $_"}
    Trap [System.Management.Automation.CommandNotFoundException]{
        Write-Output "Komut Bulunamadı: $_"}

    Get-NetAdapter -Virtual
}

Get-Eth
Çıktı:
Bilinmeyen Bir Hata Oluştu: A parameter cannot be found that matches parameter name 'Virtual'.

PowerShell Try Catch Finally Kullanımı ve PowerShell Trap Kullanımı

Bu makalede PowerShell Try Catch Finally kullanımı ve PowerShell Trap kullanımı üzerinde duruldu. Soru ve önerilerinizi aşağıdaki formu kullanarak bize iletebilirsiniz.

Daha Fazla Göster

Ahmet Elibol

Üniversite eğitimini Kimya ve İşletme bölümlerinde tamamlayan Ahmet Elibol, yüksek lisans eğitimini de İşletme (Master of Business Administration - MBA) üzerinde tamamlamıştır. 1999 yılından bu yana bilişim sektöründe bulunmaktadır.  Ahmet Elibol, profesyonel kariyerine aldığı pascal ve delphi ile yazılım mühendisliği eğitimiyle başlamıştır. 2004 yılından sonra ilgi ve uzmanlık alanlarını Microsoft Sunucu Sistemleri, Sistem Programlama ve Bilgi Güvenliği konularında güncellemiştir. Yazar 4 yıl kadar bir akademide Sistem Mühendisliği eğitimleri de vermiştir. Yazar hobi amaçlı programlama, yapay zeka, makine öğrenmesi, yapay sinir ağları, görüntü işleme ve nesnelerin interneti konularında çalışmaktadır. İngilizce, Rusça dillerini bilen Ahmet Elibol MCT, MCITP, MCTS, MCSE, MCSA vb. uzmanlık sertifikalarına sahiptir ve Bilgisayar Mühendisliği yüksek lisansına devam etmektedir.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu