मैं mutables चर से बचने की कोशिश कर रहा हूं, लेकिन समस्या यह है कि मुझे एक वैल तक पहुंचने की ज़रूरत है जिसे मुझे कोशिश के अंदर आरंभ करने की आवश्यकता है (यह एक डीबी ऑपरेशन है जो माइग विफल हो जाता है) और मैं में है कि वर की जरूरत है अंत में ब्लॉकस्कैला: मैकबेल से बचने के लिए कैसे करें
मैं कई विकल्पों के साथ करने की कोशिश की: आरंभ बिना
कोशिश ब्लॉक
try {
val resultSet = SQL(sql).resultSet
return ColumnInfo(resultSet.getMetaData)
} catch {
case e => throw new ColumnInfoException("Error getting metadata")
} finally {
resultSet.close
}
error: not found: value resultSet
कोशिश ब्लॉक के बाहर वैल की घोषणा के अंदर वैल की घोषणा यह
val resultSet: java.sql.ResultSet
try {
resultSet = SQL(sql).resultSet
return ColumnInfo(resultSet.getMetaData)
} catch {
case e => throw new ColumnInfoException("Error getting metadata")
} finally {
resultSet.close
}
error: only classes can have declared but undefined members
एक वर, जो
var resultSet: java.sql.ResultSet = null
try {
resultSet = SQL(sql).resultSet
return ColumnInfo(resultSet.getMetaData)
} catch {
case e => throw new ColumnInfoException("Error getting metadata")
} finally {
resultSet.close
}
और अंत में घोंसले कोशिश कैच ब्लॉक है, जो बल्कि गंदा
try {
val resultSet = SQL(sql).resultSet
try {
return ColumnInfo(resultSet.getMetaData)
} catch {
case e => throw new ColumnInfoException("Error getting metadata")
} finally {
resultSet.close
}
} catch {
case e => throw new ColumnInfoException("Error opening resultSet")
}
लगता है वहाँ कुछ बेहतर दृष्टिकोण मैं से बचने के लिए ले जा सकते हैं है काम करने के लिए लगता है का उपयोग करते हुए वर्र्स और घोंसले का प्रयास कर ब्लॉक का उपयोग कर?
नीचे मतदान की व्याख्या करने के लिए देखभाल की एक टुपल का मूल्यांकन कर सकता है? – nilskp
दूसरी पकड़ भी पहली कोशिश से कोई अपवाद पकड़ लेगा, है ना? (ऊपर से, क्योंकि यह मेरे अपने संस्करण में सुधार करता है ...) – opensas
हां, यह परिणाम सेट बंद कर देगा, लेकिन बाहरी प्रयास ब्लॉक को पकड़ने के लिए छोड़ दें। – nilskp