2013-12-12 12 views
6

मुझे जावा से स्कैला कोड कॉल करने की आवश्यकता है, इसलिए मुझे संकलक को बताना होगा कि एक निश्चित विधि कुछ अपवाद फेंकता है। यह easy to do for one exception है, लेकिन मैं यह घोषणा करने के लिए संघर्ष कर रहा हूं कि एक विधि कई अपवादों को फेंकता है।स्कैला @ एकाधिक अपवादों को जन्म देता है

यह काम नहीं करता है:

@throws(classOf[ ExceptionA ], classOf[ExceptionB]) 

और, जाहिर है, न तो इस करता है:

@throws(classOf[ ExceptionA , ExceptionB]) 
+0

क्या आपने इसके बजाय '@ थ्रो' एनोटेशन को जोड़ने की कोशिश की है? अगर यह काम करता है तो मुझे बताएं और मैं – cmbaxter

+0

@cmbaxter के रूप में जोड़ दूंगा, मैंने आपकी टिप्पणी कब देखी थी, और यह काम करता है। कृपया इसे उत्तर के रूप में जोड़ें और मैं स्वीकार करूंगा – goncalopp

उत्तर

9

@throws के लिए निर्माता को देखने में, यह एक Class[_] तर्क लेता है। इसे ध्यान में रखते हुए, आप कई वर्गों का प्रतिनिधित्व करने के लिए सरणी नोटेशन का उपयोग करने में सक्षम नहीं होंगे। इसलिए एनोटेशन को कई बार जोड़ने का विकल्प, प्रत्येक समर्थित अपवाद के लिए:

@throws(classOf[ExceptionA]) 
@throws(classOf[ExceptionB]) 
4

@throws पालन परिभाषित किया गया है:

class throws[T <: Throwable](cause: String = "") extends scala.annotation.StaticAnnotation {...} 

तो तुम केवल रख सकते हैं प्रति एनोटेशन के लिए एक अपवाद। प्रति अपवाद एक एनोटेशन जोड़ें।

संबंधित मुद्दे