2010-08-01 13 views
63

ile eşdeğerdir. Java'nın istisna paketlerini, .NET'inkiyle olduğu kadar tanıyacağım. C# ile programlama yaparsam, System.InvalidOperationException'u atarım.Java, .NET System.InvalidOperationException

Kendi java.lang.RuntimeException alt sınıfımı oluşturmadan önce, Java'ya atmam gereken benzer bir özel durum türü olup olmadığını bilmem gerekir.

tam senaryo:

My sınıfı bir int dönen bir int intValue() yöntem sağlar bir değer amacıdır. Ancak, bazı durumlarda, geçerli değer bir int olarak sağlanamaz, bu nedenle bu sınıf, API kullanıcılarının intValue() güvenli bir şekilde çağrılabileceğini bilmelerine olanak tanımak için bir boolean isInteger() sağlar.

Arayan kişi, isInteger()false olduğunda intValue() numaralı telefonu çağırırsa, bir istisna atılmalıdır.

Ve soru şu: Ne tür bir istisna?

Bu sorunun numaralı doğru yanıtına sahip olmadığını biliyorum, ancak Java API'lerini tasarlama konusunda çok fazla deneyime sahip olmadığımı düşünürsek, diğer Java geliştiricilerinden neler beklendiklerini bilmek istiyorum. senaryo.

sayesinde

+0

olası yinelenen [C# 'ın ınvalidoperationexception bir Java eşdeğer mi?] (Http://stackoverflow.com/questions/3165701/is-there-a-java-equivalent-of-cs-invalidoperationexception) – Carl

cevap

72

Taç bir IllegalStateException: Bir yöntem, bir kaçak veya uygun olmayan bir zamanda çağrıldığı

sinyaller. Diğer bir deyişle, Java ortamı veya Java uygulaması, numaralı istemde, istenen işlemi için uygun durumda değildir.

ait
+9

' IllegalStateException', hakkında sorulan özel durum için kesinlikle doğrudur. Bazı durumlarda, bir 'UnsupportedOperationException' atmanın daha uygun olabileceğine inanıyorum. Örneğin, bir "Yineleyici", "kaldır" yöntemini desteklemiyorsa. – csauve

İlgili konular