প্রোগ্রামের মধ্যে থেকে জাভা অ্যাপটি কীভাবে ছাড়বেন


145

কোড সহ জাভা অ্যাপ্লিকেশন ছাড়ার সর্বোত্তম উপায় কী?


1
হুম। আমি মনে করি প্রশ্নটি খুব সাধারণ হতে পারে। কি পরিস্থিতিতে ছেড়ে দিন?
অ্যালেন জর্জ

3
আপনার সমস্ত নন-ডেমন থ্রেডগুলি স্বাভাবিকভাবে শেষ করতে দিন?
থরবজর্ন রাভন অ্যান্ডারসন

উত্তর:


192

আপনি System.exit()এই উদ্দেশ্যে ব্যবহার করতে পারেন ।

ওরাকলের জাভা 8 ডকুমেন্টেশন অনুসারে:

public static void exit(int status)

বর্তমানে চলমান জাভা ভার্চুয়াল মেশিনটি সমাপ্ত করে। যুক্তি স্থিতি কোড হিসাবে কাজ করে; কনভেনশন দ্বারা, একটি ননজারো স্থিতি কোড অস্বাভাবিক সমাপ্তি নির্দেশ করে

এই পদ্ধতিটি ক্লাস রানটাইমে প্রস্থান পদ্ধতিকে কল করে। এই পদ্ধতিটি কখনই সাধারণত ফিরে আসে না।

কলটি System.exit(n)কার্যকরভাবে কলটির সমতুল্য:

Runtime.getRuntime().exit(n)


102
System.exit(0);

"0" আপনার প্রোগ্রামকে যাকে ডেকেছে তা জানতে দেয় যে সবকিছু ঠিক আছে। তবে, যদি আপনি কোনও ত্রুটির কারণে প্রস্থান করছেন, তবে আপনার System.exit(1);বা অন্য কোনও শূন্য নম্বর নির্দিষ্ট ত্রুটির সাথে হওয়া উচিত।

এছাড়াও, অন্যরা যেমন বলেছে, প্রথমে পরিষ্কার করুন! এর মধ্যে ফাইল এবং অন্যান্য উন্মুক্ত সংস্থান বন্ধ করা জড়িত।


আমি ভেবেছিলাম এটি System.exit (1)?
এএফকে

14
ক্রিস যেমন বলেছেন, System.exit(1)(বা অন্য কোনও সংখ্যা) হ'ল যদি আপনি এটি চিহ্নিত করতে চান যে এটি কোনও ত্রুটির কারণে বন্ধ হয়ে গেছে। System.exit(0)ইঙ্গিত দেয় যে প্রোগ্রামটি সাধারণত বন্ধ ছিল। আপনি নিজের পছন্দ মতো যে কোনও সংখ্যায় 1 পরিবর্তন করতে পারেন, তারপরে আপনি যখন কোনও স্ক্রিপ্ট থেকে আপনার অ্যাপ্লিকেশনটি চালাচ্ছেন আপনি কোনও ত্রুটি হয়েছে কিনা তা নির্ধারণ করতে পারেন।
স্টর্মপুপার

10

System.exit(int i)ব্যবহার করা হচ্ছে, তবে আমি এটিকে আরও জেনেরিক shutdown()পদ্ধতির মধ্যে অন্তর্ভুক্ত করব, যেখানে আপনি "ক্লিনআপ" পদক্ষেপগুলি অন্তর্ভুক্ত করবেন, সকেট সংযোগ বন্ধ করে দেবেন, ফাইল বর্ণনাকারী, তারপরে প্রস্থান করা হবে System.exit(x)


6

System.exit() সাধারণত সেরা উপায় নয়, তবে এটি আপনার প্রয়োগের উপর নির্ভর করে।

কোনও অ্যাপ্লিকেশন শেষ করার স্বাভাবিক main()পদ্ধতিটি পদ্ধতিটি থেকে বেরিয়ে আসা । যখন গ্রাফিকাল ইউজার ইন্টারফেস (এডাব্লুটি, সুইং ইত্যাদি) এর সাথে অ্যাপ্লিকেশনগুলির জন্য যথারীতি অন্যান্য নন-ডিমন থ্রেড চলমান থাকে তখন এটি কাজ করে না। এই অ্যাপ্লিকেশনগুলির জন্য, আপনি হয় GUI ইভেন্ট লুপটি শেষ করার উপায় খুঁজে পান (এটি ডাব্লুটিটি বা সুইং দিয়ে সম্ভব কিনা তা জানেন না), বা অনুরোধ করবেন System.exit()


4

dispose();আপনার প্রোগ্রামগুলি বন্ধ করার জন্য ব্যবহার করা একটি খুব কার্যকর উপায়।

আমি দেখতে পেলাম যে System.exit(x)মিথস্ক্রিয়া ফলকটি পুনরায় সেট করে এবং মনে করে আপনার সেখানে কিছু তথ্যের প্রয়োজন রয়েছে যা সমস্ত অদৃশ্য হয়ে যায়।


3

আমি জনের সাথে একমত, আপনার অ্যাপ্লিকেশনটি কোনও বিষয়ে প্রতিক্রিয়া জানাবে এবং System.exit () এ কল করুন।

নিশ্চিত হন:

  • আপনি উপযুক্ত প্রস্থান মান ব্যবহার করুন। 0 হল স্বাভাবিক প্রস্থান, অন্য কোনও কিছুতে ত্রুটি ছিল তা বোঝায়
  • আপনি সমস্ত ইনপুট এবং আউটপুট স্ট্রিম বন্ধ করেন। ফাইল, নেটওয়ার্ক সংযোগ ইত্যাদি
  • আপনি লগ বা প্রস্থান করার জন্য বিশেষত যদি কোনও ত্রুটির কারণে মুদ্রণ করেন

2

উত্তর হ'ল System.exit (), তবে প্রোগ্রামটি বন্ধ হয়ে যাওয়ার কারণে করার মতো কোনও ভাল জিনিস নয়। কোনও পরিষ্কার-পরিচ্ছন্নতা, ধ্বংস করার জন্য আপনি যা করতে চান তা ঘটবে না।


1

প্রশ্নের দুটি সহজ উত্তর আছে।

এটি "পেশাদার উপায়":

//This just terminates the program.
System.exit(0);

এটি একটি আরো clumsier উপায়:

//This just terminates the program, just like System.exit(0).
return;

System.exit(0); return;খুব ভাল, রিটার্নটি সিস্টেমটি প্রস্থান হওয়ার আগে কোনও রথার কোড চালানো থেকে বাধা দেয়, অন্যথায় আপনার একটি পতাকা লাগবে (..i.e. if (!called_exit) { further code after exit statement }
ycomp

-1
Runtime.getCurrentRumtime().halt(0);

1
আরও ভাল: রানটাইম.জেটআরটাইম ()। হোল্ট (0); স্কেলার মধ্যে আমার জন্য নিখুঁতভাবে কাজ করেছেন!
জেরহার্ড হ্যাজারার

@ জেরহার্ডহাগের তবে এখনকার রন্টি না পেলে আমাকে?
ডুড ব্রো

1
জাভাডোক থেকে halt: "এই পদ্ধতিটি চূড়ান্ত সতর্কতার সাথে ব্যবহার করা উচিত। exitপদ্ধতির বিপরীতে , এই পদ্ধতিটি শাটডাউন হুকগুলি শুরু করার কারণ ঘটায় না এবং চূড়ান্তকরণ-অন-প্রস্থান সক্রিয় করা থাকলে অবিচলিত ফাইনালাইজারগুলি চালায় না If যদি শাটডাউন ক্রমটি হয়েছে ইতিমধ্যে সূচনা করা হয়েছে তখন এই পদ্ধতি কোনও চলমান শাটডাউন হুক বা চূড়ান্তকরণকারীদের কাজ শেষ করার জন্য অপেক্ষা করে না। " সংক্ষেপে, আপনার ব্যবহারের প্রয়োজন হবে না halt, আপনার পছন্দ করা উচিত exit
এরউইন বোলভিড

-1

System.exit()আপনি যা চান তা করবে তবে বেশিরভাগ পরিস্থিতিতে আপনি সম্ভবত একটি থ্রেড থেকে প্রস্থান করতে চান এবং মূল থ্রেডটি জীবিত রেখে যেতে চান। এটি করে আপনি কোনও কাজ শেষ করতে পারেন, তবে অ্যাপটি আরম্ভ না করেই অন্য কোনও কাজ শুরু করার সক্ষমতাও রাখতে পারেন।



-3

এটি সঠিক উপায়ে এটি করা উচিত:

mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
mainFrame.addWindowListener(new WindowListener() {

@Override
public void windowClosing(WindowEvent e) {
    if (doQuestion("Really want to exit?")) {
      mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      mainFrame.dispose();
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.