java - System.out.println() और System.err.println() के बीच अंतर




(5)

Java System.out.println() आपके द्वारा उपयोग किए जा रहे सिस्टम में से मानक प्रिंट होगा। दूसरी ओर, System.err.println() मानक त्रुटि पर प्रिंट होगा।

यदि आप एक साधारण जावा कंसोल एप्लिकेशन का उपयोग कर रहे हैं, तो दोनों आउटपुट समान होंगे (कमांड लाइन या कंसोल) लेकिन आप स्ट्रीम को फिर से कॉन्फ़िगर कर सकते हैं ताकि उदाहरण के लिए, System.out अभी भी कंसोल को प्रिंट करता है लेकिन System.err एक फाइल में लिखता है ।

इसके अलावा, आईडीई जैसे ग्रहण लाल पाठ में System.err दिखाते हैं और डिफ़ॉल्ट रूप से काले पाठ में System.out

Java में System.out.println() और System.err.println() बीच अंतर क्या है?


System.out "मानक आउटपुट" (stdout) है और System.err "त्रुटि आउटपुट" (stderr) है। System.in (stdin) के साथ, ये Unix मॉडल में तीन मानक I / O स्ट्रीम हैं। अधिकांश आधुनिक प्रोग्रामिंग वातावरण (C, पर्ल, आदि) इस मॉडल का समर्थन करते हैं।

मानक आउटपुट स्ट्रीम का उपयोग प्रोग्राम के "सामान्य संचालन" से आउटपुट प्रिंट करने के लिए किया जाता है, जबकि त्रुटि स्ट्रीम "त्रुटि संदेशों" के लिए है। ये अलग होने की जरूरत है - हालांकि ज्यादातर मामलों में वे एक ही कंसोल पर दिखाई देते हैं।

मान लीजिए कि आपके पास एक सरल प्रोग्राम है जहां आप एक फ़ोन नंबर दर्ज करते हैं और यह उस व्यक्ति को प्रिंट करता है जिसके पास वह नंबर है। यदि आप एक अमान्य संख्या दर्ज करते हैं, तो प्रोग्राम को आपको उस त्रुटि के बारे में सूचित करना चाहिए, लेकिन ऐसा नहीं होना चाहिए जैसे कि उत्तर : यदि आप "999-ABC-4567" दर्ज करते हैं और कार्यक्रम एक त्रुटि संदेश प्रिंट करता है "एक वैध संख्या नहीं" , इसका मतलब यह नहीं है कि "नॉट ए वैलिड नंबर" नाम का एक व्यक्ति है जिसकी संख्या 999-ABC-4567 है। इसलिए यह मानक आउटपुट के लिए कुछ भी प्रिंट नहीं करता है, और त्रुटि आउटपुट पर संदेश "एक वैध संख्या नहीं" मुद्रित होता है।


यह ध्यान देने योग्य है कि एक OS के पास System.err और System.out दोनों के लिए एक कतार है। निम्नलिखित कोड पर विचार करें:

public class PrintQueue {
    public static void main(String[] args) {
        for(int i = 0; i < 100; i++) {
            System.out.println("out");
            System.err.println("err");
        }
    }
}

यदि आप प्रोग्राम को संकलित और चलाते हैं, तो आप देखेंगे कि कंसोल में आउटपुट का क्रम मिला हुआ है।

यदि आप या तो System.out या System.err के साथ काम करते हैं तो OS सही क्रम बना रहेगा। लेकिन यह बेतरतीब ढंग से चुन सकता है कि कंसोल के बगल में क्या प्रिंट करें, यदि आप इन दोनों का उपयोग करते हैं।

यहां तक ​​कि इस कोड स्निपेट में आप देख सकते हैं कि ऑर्डर कभी-कभी मिलाया जाता है:

public class PrintQueue {
    public static void main(String[] args) {
        System.out.println("out");
        System.err.println("err");
    }
}

वे कमांड विभिन्न आउटपुट स्ट्रीम का उपयोग करते हैं। डिफ़ॉल्ट रूप से दोनों संदेश कंसोल पर मुद्रित किए जाएंगे, लेकिन उदाहरण के लिए इन दोनों को एक फ़ाइल में पुनर्निर्देशित करना संभव है।

java MyApp 2>errors.txt

यह System.err को errors.txt से errors.txt । फ़ाइल में।






system.err