2012-05-16 11 views
7

जावा assert और if() {} else exit; के बीच क्या अंतर है?जावा 'assert' और 'if() {} के बीच अंतर बाहर निकलें;'

क्या मैं assert के बजाय if() {} else exit का उपयोग कर सकता हूं?

+8

क्या आपने 'assert' पर दस्तावेज़ पढ़ने की कोशिश की है और यह क्या करता है? – dhblah

उत्तर

6

शायद Google का थोड़ा सा?

"मुख्य बात यह है कि आपको ध्यान में रखना चाहिए कि अगर अन्यथा कार्यक्रम प्रवाह प्रवाह नियंत्रण के लिए उपयोग किया जाना चाहिए और जोरदार कीवर्ड का प्रयोग केवल परीक्षण उद्देश्यों के लिए किया जाना चाहिए। आपको किसी भी ऑपरेशन को वास्तव में करने के लिए कभी भी आवेषण का उपयोग नहीं करना चाहिए आपके आवेदन ठीक से काम करने के लिए सूर्य की आधिकारिक जावा प्रलेखन के अनुसार:। "प्रत्येक अभिकथन एक बूलियन अभिव्यक्ति है कि आपको लगता है कि जब जोर कार्यान्वित सच हो जाएंगे।" "

और अधिक पढ़ें: http://wiki.answers.com/Q/What_is_the_difference_between_assert_keyword_and_if_keyword_in_java#ixzz1v2GGfAhq

+0

नीचे दिए गए कोड को देखें – jcy

+0

'int * ptr = malloc (sizeof (int) * 10);' 'जोर दें (पीआरटी);' '... ' – jcy

+0

अपना कोड कोड टैग में रखें ताकि मैं इसे बेहतर देख सकूं। यह निर्भर करता है कि आप एक परीक्षण करना चाहते हैं। यदि आप अपने परीक्षणों को अपने वास्तविक कोड से अलग नहीं करना चाहते हैं, तो अगर बाहर निकलें तो बाहर निकलें। दावा केवल परीक्षण उद्देश्यों के लिए हैं ^^ – Depado

3

आप, ज़ोर विशेष रूप से कोड के कुछ हिस्से पर जोर बनाया गया है सकते हैं,

ज़ोर AssertionError फेंक अगर यह


का दावा करने में विफल रहता है इन्हें भी देखें

2

यदि आपका प्रोग्राम आपके प्रवाह के प्रवाह को नियंत्रित करने के लिए है। इस के लिए जोर नहीं दिया जाना चाहिए! आवेषण केवल आपके कोड में "चेकपॉइंट्स" रखने के लिए हैं जो "हमेशा" मेल खाने वाली स्थितियों की जांच कर सकते हैं।

प्रोग्राम चलाने पर आवेषण चालू या बंद किया जा सकता है ताकि आप अपने विकास मशीन/एकीकरण वातावरण पर आवेषण सक्षम कर सकें और उन्हें जारी संस्करण में अक्षम कर सकें।

2

ज़ोर कीवर्ड जब आप -ea पर दावे को सक्षम करते हैं तो केवल अपवाद को ट्रिगर करेगा कमांड लाइन। अगर/हमेशा हमेशा निष्पादित होगा। उस पर शीर्ष पर कीवर्ड कम वर्बोज़ कोड लिखने की अनुमति देता है। की तुलना करें:

assert parameter != null; 

रहे हैं:

if(parameter != null) 
{ 

} 
else 
{ 

} 
+0

निश्चित रूप से जोर आपको कम वर्बोज़ कोड लिखने की अनुमति देता है, लेकिन आप अभी भी 'अगर (prm == null) नया अपवाद (...) फेंक सकते हैं; '। इस उद्देश्य के लिए दावे सिर्फ इसलिए नहीं किए गए हैं, इसलिए वे आपके प्रोग्राम को उत्पादन में डालते समय बेकार परीक्षण नहीं किए जाते हैं (क्योंकि आपके दावे हमेशा वैध होने के लिए होते हैं)। इसलिए, उन्हें उत्पादन पैकेज से हटा दिया जाता है। – belka

0

का दावा अनदेखी कर रहे हैं, जब तक कि -ea परम पारित हो जाता है:

जावा -ea myjar.jar

इस तरह, आप उन्हें इस्तेमाल कर सकते हैं जब आप अपने आवेदन का परीक्षण कर रहे हैं, लेकिन उन्हें दूसरी बार अनदेखा करें।

3

मैं सिर्फ दावे

class A{ 

public static void main(String[] args) { 
    assert false; 
    System.out.println("hi"); 
} 
} 

इस कोड को डिफ़ॉल्ट

$ java -cp . A 
hi 
$ java -ea -cp . A 
Exception in thread "main" java.lang.AssertionError 
    at A.main(A.java:6) 
1

द्वारा हाय प्रिंट होगा मैं सिर्फ अगर() {} ज़ोर के बजाय किसी और बाहर निकलने के लिए उपयोग कर सकते अनदेखा कर सकते हैं?

हाँ, आप कर सकते थे, लेकिन ...

  • आप परीक्षण की बारी करने में सक्षम है जब तक आप शर्त किया गया एक अतिरिक्त ध्वज (यह और अधिक जटिल बना देता है, आदि पर निर्भर नहीं होगा),

  • आप किसी भी संलग्न finally ब्लॉक में साफ-अप प्रदर्शन करने के लिए एक मौका, नहीं मिलेगा

  • यह समस्या का कारण प्रवेश करने के लिए और अधिक जटिल हो जाएगा अगर AssertionError (या कोई अन्य अपवाद) फेंक दिया गया था, और

  • यदि आपके कोड को किसी अन्य एप्लिकेशन में पुन: उपयोग करने की आवश्यकता है (जैसा है), तो exit पर आपकी कॉल समस्याग्रस्त हो सकती है।