Smalltalk'de son yakalama ifadesini nasıl anlarsınız? Görüyorum ki on:do:
ve ensure:
, ancak on:do:ensure:
değil. Bir şey kaçırmam lazım.try-catch-nihayet küçük resimdeki deyim
cevap
#on: Buradaki #ensure: ekine sahip başka bir satırda blok yapın.
Ben sorunuzu anladım, ama ben yaptım ve "o tetiklenir eğer nasıl bir istisna ele alır ve aksi takdirde normal yürütme devam" anlamına eğer, bu ne yapabileceğini olduğundan emin değilim:
[self doWhatever] on: SomeException do: [self handleSomeException].
self continueNormally.
Yakalayabileceğiniz istisna türlerini görmek için İstisna'nın tüm alt sınıflarına bakın.
Yardım edin!
Sonuncu blok, yalnızca yürütme normal olarak devam ettiğinde değil, aynı zamanda bir istisna Smalltalk #ensure: gibi yığını açtığı zaman yürütülür. Diğer cevapları gör. –
gerçekten ihtiyacınız varsa, BlockClosure bir protokol ekleyebilirsiniz: catch: nihayet: java sadece denemede gibi davranır edecek
#on: anErrorOrSet do: errorBlock ensure: finallyBlock
[ self on: anErrorOrSet do: errorBlock ]
ensure: finallyBlock
. ihtiyaçlarınız için herhangi bir eşleşme varsa, Smalltalk büyüsünü (iyi, bunun küçük bir parçası) bulunuyor
, her zaman uzatabilirsiniz :)
Bu kutunun dışına yazabilirsiniz nasıl neredeyse tüm Smalltalk lehçelerinde.
[[ "try{}" ]
on: Error
do: [:ex | "catch{}"]]
ensure: ["finally{}"]
Veya @EstebanLM önerildiği gibi BlockClosure uzatabilirsiniz.
- 1. Resimdeki araç ipuçları
- 2. Resimdeki ipucu
- 3. python deyim için python deyim python ifadesi
- 4. bir deyim
- 5. Resimdeki arabellek görseli gönder
- 6. Resimdeki gibi merkezleme div
- 7. Resimdeki sütunlarda resim
- 8. Resimdeki metni okuyun iPhone SDK
- 9. Bir resimdeki çizgiyi izleme MATLAB
- 10. Resimdeki klasörden/dosyadan görüntülenmesi vb.net
- 11. Geçersiz deyim (Node.js)
- 12. SQL deyim hatası
- 13. kopyala-takas deyim
- 14. Endeksi yineleme deyim
- 15. c puzzle (if deyim)
- 16. C# IS deyim neden çalışmıyor?
- 17. JOIN iki SELECT deyim sonuçları
- 18. Android Studio: bir deyim hatası
- 19. Bu TPL deyim var mı?
- 20. Kasa deyim kalıpları nasıl birleştirilir
- 21. Çekirdek Veri: deyim hala aktif
- 22. #define veya #if deyim hatası
- 23. Resimdeki saydam bir divı üst üste bindirebilir
- 24. Resimdeki mevcut exif profiline etiket değeri ekleyin
- 25. Resimdeki iletinin gövdesine C# içinde eklenmesi #
- 26. C# resimdeki bir dikdörtgenin çiziminde mi?
- 27. Resimdeki görüntüye bir renk filtresi eklemek istiyorum
- 28. Resimdeki dikdörtgen çizimi - dikdörtgen alanın nasıl sınırlandırılacağı?
- 29. MATLAB - Resimdeki gölgeli arka plan nasıl kaldırılır
- 30. Resimdeki canlandırmayı şu anki çizimin yeniden çizilmeden C# yenilemesi
Ah gerçekten de. Bunu düşündüm ama her nasılsa iç bloğu iki kez çalıştıracağını düşündüm, çünkü her ikisi de #on: do: ve #ensure: # value gönder. – milan
'#ensure:' '' değeri '' gönderen, içeriğini #on: do: 'olarak gönderecek olan içeriğini değerlendirecek ve bu da sonuç olarak en son bloğu en sondaki bloğa gönderecektir. Kullanışlı bir şeyler yap. Diğer bir deyişle, iki '# 'değeri farklı bloklara gönderilir. –