2015-02-25 29 views
6

MyScript.ps1:Bir istisna atarken çıkış kodu nasıl belirlenir?

exit 1 

MyThrow.ps1: PowerShell

throw "test" 

Yürütme: Bir istisna atma zaman

& ".\MyScript.ps1" 
Write-Host $LastExitCode # Outputs 1 

Clear-Variable LastExitCode 

& ".\MyThrow.ps1" 
Write-Host $LastExitCode # Outputs nothing 

Nasıl uygun çıkış kodunu ayarlamak için?

+0

Komuttan önce "try/catch" komutunu kullanmayın ya da '$ lastexitcode 'komutunu silmeyin ve daha sonra" $ null "olup olmadığını sınayın. – arco444

+0

Sonunda komut, PowerShell'den değil görev zamanlayıcıdan yürütülür. Komut dosyası bir istisna atarsa, görev zamanlayıcısındaki çıkış kodu 0'dır. –

+0

Komut dosyasına erişiminiz var mı? En iyi çözüm, orada istisnaları düzgün bir şekilde yakalamak ve bir catch ile çıkmak veya – arco444

cevap

8

Yapmıyorsunuz. Bir istisna atarken, birisinin bunu halledmesini beklersiniz. Birisi infazını sonlandıracak ve bir çıkış kodu belirleyecek kişi olacaktı. Örneğin:

try { 
    & ".\MyThrow.ps1" 
} catch { 
    exit 1 
} 

hemen (uygun bir çıkış kodu ile) ilk etapta atma açmaması gereken durum yakalamak için hiçbir şey, ama çıkış varsa.

+0

Eğer ne yapmak istiyorsanız nihayet yakalamaya çalış Eğer yakalayıcının içine düşersen, çıkmazdan asla nihayet vurmazsın. – BigMiner

+3

@BigMiner Senin varsayımın yanlış. –

İlgili konular