কীভাবে একটি প্রস্থান বার্তা তৈরি করতে হয়


208

এমন কোনও এক লাইনের ফাংশন কল রয়েছে যা প্রোগ্রামটি ছেড়ে দেয় এবং একটি বার্তা প্রদর্শন করে? আমি পার্লে জানি এটি এতটা সহজ:

die("Message goes here")

আমি এটি টাইপ করে ক্লান্ত:

puts "Message goes here"
exit

10
একটি ছোট মন্তব্য করুন, আপনার putsstdout- এ লিখছেন, যেহেতু dieলিখেছেন stderr, তাই: $stderr.puts "Message goes here"
সিডারকে

আমি জানি যে এটি কোনও উত্তর ছিল না, তবে এটি আমার প্রশ্নের উত্তর দিয়েছে, ধন্যবাদ
প্যাট্রিক

শুধু রেফারেন্সের জন্য, পাইথনে এটি sys.exit("Message goes to stderr")
অ্যানাটোলি টেকটোনিক

উত্তর:


361

abortফাংশন এই আছে। উদাহরণ স্বরূপ:

abort("Message goes here")

দ্রষ্টব্য: abortবার্তাটি তার STDERRবিপরীতে লিখিত হবে যা এতে লিখিত putsহবে STDOUT


6
কি দারুন! ভাল লাগছে! খুব খারাপ তারা এই কার্যকারিতা সহ কেবল ওভারলোড প্রস্থান করেনি ....
মাইক স্টোন

56
দ্রষ্টব্য, অ্যাওর্ট প্রোগ্রামটি মিথ্যা অবস্থার সাথে প্রস্থান করে যা একটি ব্যর্থতার প্রতিনিধিত্ব করে। সত্য উপস্থাপনা সাফল্যের একটি স্থিতি সঙ্গে ডিফল্ট প্রস্থান প্রস্থান। আপনি পরিস্থিতির জন্য সঠিকটি ব্যবহার করেছেন তা নিশ্চিত করুন।
অ্যালেক্স স্পার্লিং

1
পুনরায়। মাইক স্টোনর মন্তব্য, মাঝে মাঝে মনে হয় যেন রুবি এমন একটি দল লিখেছিলেন যাঁর একে অপরের সাথে যোগাযোগ ছিল না, তাই না? (তবুও, এটিতে প্রোগ্রাম করা এত সহজ))
জেলিকেলকিট

24

আপনি যদি আপনার কোডটিতে একটি আসল ত্রুটি বোঝাতে চান তবে আপনি একটি RuntimeErrorব্যতিক্রম বাড়াতে পারেন :

raise RuntimeError, 'Message goes here'

এটি স্ট্যাকট্রেস, উত্থাপিত হওয়ার ব্যতিক্রমের ধরণ এবং আপনি যে বার্তা সরবরাহ করেছেন তা মুদ্রণ করবে। আপনার ব্যবহারকারীদের উপর নির্ভর করে একটি স্ট্যাকট্রেস খুব ভয়ঙ্কর হতে পারে এবং প্রকৃত বার্তাটি গোলমালে হারিয়ে যেতে পারে। অন্যদিকে, আপনি যদি সত্যিকারের ত্রুটির কারণে মারা যান তবে স্ট্যাকট্রেস আপনাকে ডিবাগিংয়ের জন্য অতিরিক্ত তথ্য দেবে।


24
একটি বাড়াতে আপনার রানটাইমআরারের উল্লেখ করার দরকার নেই (এটি উত্থাপিত ডিফল্টরকম ব্যতিক্রম উত্থাপিত) যাতে নিম্নলিখিত কোডটি যথেষ্ট হবে: উত্থাপন করুন 'বার্তাটি এখানে যায়'
সুনাকু

সুনাকু - আপনার মন্তব্যটি পুরোপুরি বৈধ হলেও আমি প্রায়শই দেখতে পেলাম যে আরও স্পষ্ট করে দেওয়া দরকারী হতে পারে, বিশেষত অন্যান্য লোকদের পরে কোডটি পড়ার ক্ষেত্রে।
শেভি

2

আমি কখনও এই জাতীয় অনুষ্ঠানের কথা শুনিনি, তবে এটি বাস্তবায়নের পক্ষে যথেষ্ট ক্ষুদ্র হবে ...

def die(msg)
  puts msg
  exit
end

তারপরে, যদি এটি আপনার সমস্ত স্ক্রিপ্টগুলিতে অন্তর্ভুক্ত কিছু .rb ফাইলে সংজ্ঞায়িত করা হয় তবে আপনি সোনালী .... কেবলমাত্র এটি অন্তর্নির্মিত নয় এর অর্থ আপনি নিজে এটি করতে পারবেন না ;-)


3
'গর্ভপাত' ফাংশনটি এটি করে দেয় (নীচে আমার উত্তর দেখুন)
ক্রিস বাঞ্চ

1
গর্ভপাত কার্যকারিতা যখন এটি আপনার জন্য করে তখন কোড কেন লিখবেন?
গ্যারি হারান

2
@ChrisBunch এই না পরিত্যাগ ফাংশন হিসাবে একই: exitফিরে যেমন যদি এটা সফল হয়েছে ডিফল্ট। abortএকটি ব্যর্থতা ফিরে। exit 1পাশাপাশি একটি ব্যর্থতা ফিরে আসবে।
টেম্পোরাল

2

প্রোগ্রামটি যখনই শেষ হবে তখন আমি কিছু কোড কার্যকর করার জন্য এখানে সন্ধান পেয়েছি।
এটি পাওয়া গেছে :

Kernel.at_exit { puts "sayonara" }
# do whatever
# [...]
# call #exit or #abort or just let the program end
# calling #exit! will skip the call

একাধিকবার কল করা একাধিক হ্যান্ডলার নিবন্ধন করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.