SORU
8 Mayıs 2013, ÇARŞAMBA


Eğer bir istisna asla atılır, hatta try-catch bloğu kullanmak için fazla pahalı değil mi?

Özel durumlar yakalamak için pahalı olduğunu biliyoruz. Ama, aynı zamanda kullanmak için pahalı bir durum asla atılır, hatta try-catch bloğu Java?

Taşma soru/cevap Yığını buldumWhy are try blocks expensive?ama .NET için.

CEVAP
8 Mayıs 2013, ÇARŞAMBA


try neredeyse hiç masraf vardır. Yerine işi yapacak kurulması try çalışma zamanında kod meta düzenlenmiştir derleme zamanında böyle o zaman bir istisna atılır, şimdi nispeten pahalı bir operasyon kadar yürüyüş, yığın ve görmek eğer herhangi try blok var ki yakalamak bu durum. Bir rahip olmayan kimse açısından, try da ücretsiz olacak. Aslında size maliyeti dışında atıyor - ama yüzlerce veya binlerce özel durumlar atma değilsen, hala maliyeti fark etmez.


try Bazı küçük maliyetler ile ilişkili vardır. Java yoksa devam edemem ki try bir blok içinde kod üzerinde bazı iyileştirmeler yapmak. Örneğin, Java genellikle yeniden düzenlemek talimatları bir yöntem için, " daha hızlı koş - ama Java da ihtiyaçları garanti altına alan bir özel durum, yöntemin yürütme görülmektedir sanki kendi ifadeleri olarak yazılmış kaynak kodu, idam sipariş için birkaç satır.

try bir blok içinde bir özel durum olabilir (herhangi bir deneyin blok satır. Bazı istisnalar atılan uyumsuz gibi çağırarak stop bir İplik (kullanım dışı), ve hatta başka OutOfMemoryError olabilir hemen hemen her yerde) ve henüz olabilir yakaladı ve kod devam etmek için Yürüt, daha sonra aynı yöntem, daha zor nedeni bu iyileştirmeler yapılabilir, bu yüzden onlar daha az olur. (Birileri onlara, akıl ve vb doğruluğu garanti derleyici programı. Bir şey olması gerekiyordu 'olağanüstü') Ama yine de, uygulamada bu gibi şeyler fark etmez. için büyük bir acı olurdu

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • How Things Are Made

    How Things A

    17 HAZİRAN 2008
  • macpulenta

    macpulenta

    9 EYLÜL 2006
  • VJ VIMANA

    VJ VIMANA

    3 Mayıs 2007