Küresel "Tcl Yorumlayıcı Hatası" nı yakalamanın bir yolu var mı? Örneğin, aşağıdaki iletinin bazı dosyalarında otomatik olarak saklamak istiyorum."Tcl Tercüman Hatası" nı Yakalayın
cevap
Tcl tarafından atılan her türlü hatayı yakalama ana komutu catch
'dur. En az bir argüman, değerlendirilecek bir betik alır ve bu kodu değerlendiren sonuç kodunu döndürür. Bir hata oluştuğunda, 0
hata ve diğer durumlarda (genellikle hata yapmayan istisnanın diğer türlerini belirten) diğer şeyler bir demet olduğunda sonuç kodu 1
olur. catch
ayrıca, hata iletisini veya veya komut dosyası değerlendirmesinin sonucunu yazmak için bir değişkene adlandıran isteğe bağlı bir argüman alır. errorInfo
genel değişkeni, bir hata durumunda yığın izlemeyi içerecektir (veya 8,5'ten itibaren yorumlayıcı durum sözlüğünü, catch
'a iletilen başka bir değişken adıyla alabilirsiniz). Tuzak
bazı komut dosyası “foo.tcl” bir hata, böyle bir kod kullanırsınız:
if {[catch {source foo.tcl} msg]} {
puts "I got an error: $msg"
puts "The stack trace was this:\n$errorInfo"
}
O isterseniz bir dosyaya dikkat yazmak için nasıl çalışmak size kalmış. (Bu tekniği, dikkatle test edilmiş bir hata tuzağını uygulayan ve gerçek işi yapan bir iç komut dosyasını yükleyen bir dış komut dosyası ile kullanıyorum. İyi çalıştığını buluyorum. Veya bu "yakalanan" komut dosyasında yordamları arayabilirsiniz. ; Tcl tüm hataları yakalanabilir yapmalıdır ve arasından kayıp çok az durum vardır)
olay sırasında oluşan hataları işlemek için çağrılır hatalar bildirilir edilebileceğini diğer rota bgerror
yoluyladır. işleme. Kendi versiyonunuzu yazabileceğiniz bir prosedür; o hata mesajı olduğunu aradığında tek argüman verilecek ve aradığında küresel errorInfo
doğru ayarlanmış sahip olacaktır: tanımlanmış bgerror
hiçbir uygulama yoksa
proc bgerror {msg} {
global errorInfo
puts "I got an error in an event: $msg"
puts "The stack trace was this:\n$errorInfo"
}
, yığın izleme sadece yazılır stderr
kanalı. Tk paketini kullanıyorsanız, sorunu açıklayan bir iletişim kutusu açan bir bgerror
uygulaması sağlanmıştır.
Bgerror veya interp bgerror komutlarını deneyin.
bgerror belgelerini okuyun, bunun basit bir örneği vardır.
- 1. Python Tkinter atma Tcl hatası
- 2. TCL
- 3. TCL
- 4. AST tercüman?
- 5. Bir dosya adında test7.tcl var Tcl
- 6. Tcl/Tk
- 7. UIPopoverController'ın "başlığı" nı ayarlama?
- 8. İstisnalar - Hemen atın ve yakalayın
- 9. Arabirimde bir krom tıklama olayını yakalayın veya yakalayın
- 10. Kötü tercüman hata piton
- 11. Herkes "görüş alanı" nı açıklayabilir
- 12. tcl komutunun bir değişkene yeniden yönlendirilmesi, tcl sürümü: 8.4
- 13. Tcl komut dosyasını diğer tcl komut dosyasında nasıl çalıştırılır?
- 14. tcl 8.5 Fedora 22
- 15. Tcl/Tk örnekleri?
- 16. Listeyi Tcl yordamına geçirme
- 17. PyCharm'ın Python'a yönlendirilmesi 3.3 tercüman?
- 18. Python 3 Çevrimiçi tercüman/Kabuk
- 19. Javascript ile HTTP isteklerini yakalayın
- 20. deneyin .... işlem için mysql yakalayın?
- 21. Kullanıcı tcl dosyasından nasıl değiştirilir
- 22. $ expect_out, TCL/EXPECT'te nasıl çalışır?
- 23. Tcl dizeleri nasıl birbirine eklenir?
- 24. Aşağıdaki kodun "Cyclomatic Karmaşıklığı" nı nasıl küçültebilirim
- 25. Eclipse'de "ini dosyaları" nı nasıl vurgulanır
- 26. PyCharm ve Docker Tercüman ile X11 iletme
- 27. Aynı projede birden fazla tercüman peki mi?
- 28. Ubuntu phpstorm: Tercüman belirtilmemiş veya geçerli değil
- 29. Tercüman Bu böcek tarafından vuruldu cin iplik
- 30. REPL ile tercüman arasındaki fark nedir?
İyi öneri. Ama işe yaramıyor. :(Hala Tcl yorumlayıcı hatası alıyorum: "on1" okuyamıyor: terminalde böyle bir değişken 'yok', ancak işlevde değil. – ilya1725