2009-05-06 15 views
5

İstisna'dan çıkmayan bir durum ve istisna için bir yol var mı? Ben 'kurtarma İstisna' ya da daha büyük ölçüde, 'kurtarma Nesne' ile bu yakalayabilirsiniz biliyorumBir ruby ​​"istisnasının" kurtarma nesnesinden geçebileceği bir durum var mı?

require 'timeout' 
begin 
    timeout(1) {sleep(50)} 
rescue StandardError => e 
    puts e.message 
end 

, ama bu bana biraz garip gelebilir:

Ne kaçınmaya çalışıyorum şey gibidir .

+2

StandardError'ın İstisna'dan geldiğini ve StandardError ve torunları olduklarında istisnanın kurtarılmadığını biliyorsunuzdur. Sorunuzdan tamamen belli değil. – kch

+0

Evet, sadece kurtarma işlemine girecek bir istisna örneğine ihtiyacım vardı. Dediğin gibi, istisnadan gelmeyen bir şey verirsen barfs yetiştir. Bir istisnanın kaldırılabilmesi için tek yol bu mu? C API'sı aracılığıyla yükselen herhangi bir şey aynı kısıtlamalara sahiptir (yine, bir istisna oluşturabileceğinizi varsayalım). –

+0

C API hakkında hiçbir fikrim yok, ama sadece bir şey yapıp yapmadığını varsayalım Ruby'nin kendisinin izin vermediği API, API'nin uygunsuz bir kullanımıdır (ve API'nın kendisinde bir hata olabilir). Yani, çok varsayımsal. Bunun sadece geçmesine izin verirdim. – kch

cevap

3

Exception sınıfında olmayan bir hata oluşturmaya çalışırsanız, bir <TypeError: exception class/object expected> alırsınız.

+0

Teşekkürler! Bu hatayı alıyorum çünkü 'prefix'i yükseltdim, hata msg' 'yerine prefix + '' error msg '',' prefix' bir dizedir. Hata. Sabit! :) – ma11hew28

İlgili konular