ঠিক কী করবেন MediaPlayer.play()
এবং MediaPlayer.stop()
করবেন? - তারা ব্যবহারকারীর ইনপুটটির জন্য ইভেন্ট শ্রোতা নাকি সেগুলি আসলে এমন পদ্ধতি যা সিস্টেমে কোনও ধরণের মিডিয়া স্ট্রিম শুরু করে? যদি তারা সকলেই ব্যবহারকারীর ইনপুটটির জন্য শ্রোতা হয় তবে তাদের পক্ষে কিছুই না করা পুরোপুরি যুক্তিসঙ্গত (যদিও এটি কমপক্ষে কোথাও তাদের লগইন করা ভাল ধারণা হবে)। তবে, যদি তারা আপনার ইউআই নিয়ন্ত্রণ করছে এমন মডেলটিকে প্রভাবিত করে , তবে তারা একটি ছুঁড়ে ফেলতে পারে IllegalStateException
কারণ প্লেয়ারটির কিছু প্রকার isPlaying=true
বা isPlaying=false
অবস্থা থাকতে হবে (এটি এখানে লিখিত মতো সত্যিকারের বুলিয়ান পতাকা হওয়া উচিত নয়), এবং যখন আপনি কল করবেন MediaPlayer.stop()
তখন isPlaying=false
, পদ্ধতিটি আসলে "থামাতে" পারে না MediaPlayer
কারণ বস্তুটি থামানোর জন্য যথাযথ অবস্থায় নেই - এর বিবরণ দেখুনjava.lang.IllegalStateException
শ্রেণী:
একটি পদ্ধতি অবৈধ বা অনুপযুক্ত সময়ে চালিত হওয়ার ইঙ্গিত দেয় als অন্য কথায়, জাভা পরিবেশ বা জাভা অ্যাপ্লিকেশন অনুরোধকৃত ক্রিয়াকলাপের জন্য উপযুক্ত অবস্থায় নেই।
কেন ব্যতিক্রম ছোঁড়া ভাল হতে পারে
অনেক লোক মনে করে যে ব্যতিক্রমগুলি সাধারণভাবে খারাপ, যেমন তাদের কখনও নিক্ষেপ করা উচিত নয় (সিএফ । সফটওয়্যার জুয়েল )। তবে, বলুন যে আপনার কাছে একটি MediaPlayerGUI.notifyPlayButton()
কল আছে MediaPlayer.play()
এবং MediaPlayer.play()
এটি অন্য কোডের একগুচ্ছ অনুরোধ করে এবং কোথাও লসটির নীচে এটি পালস অডিও সাথে ইন্টারফেস করে তবে আমি (বিকাশকারী) কোথায় জানি না কারণ আমি এই সমস্ত কোডটি লিখি নি।
তারপরে, একদিন কোডটিতে কাজ করার সময়, আমি "প্লে" ক্লিক করি এবং কিছুই ঘটে না। যদি MediaPlayerGUIController.notifyPlayButton()
কিছু লগ হয় তবে কমপক্ষে আমি লগগুলিতে সন্ধান করতে পারি এবং বোতাম ক্লিকটি বাস্তবে নিবন্ধিত ছিল কিনা তা পরীক্ষা করতে পারি ... তবে কেন এটি প্লে হয় না? ঠিক আছে, বলুন আসলে পালস অডিও র্যাপারগুলির মধ্যে কিছু ভুল আছে যা MediaPlayer.play()
ডাকে। আমি আবার "প্লে" বোতামটি ক্লিক করি এবং এবার আমি একটি পেয়েছি IllegalStateException
:
Exception in thread "main" java.lang.IllegalStateException: MediaPlayer already in play state.
at org.superdupermediaplayer.MediaPlayer.play(MediaPlayer.java:16)
at org.superdupermediaplayer.gui.MediaPlayerGUIController.notifyPlayButton(MediaPlayerGUIController.java:25)
at org.superdupermediaplayer.gui.MediaPlayerGUI.main(MediaPlayerGUI.java:14)
সেই স্ট্যাক ট্রেসটি দেখে, আমি MediaPlayer.play()
ডিবাগ করার আগে সমস্ত কিছু উপেক্ষা করতে পারি এবং কেন সময়কালে কোনও অডিও স্ট্রিম শুরু করার জন্য কোনও বার্তা পেলস অডিওতে দেওয়া হচ্ছে না তা ভেবে আমার সময় ব্যয় করতে পারে।
অন্যদিকে, আপনি যদি কোনও ব্যতিক্রম না ছুঁড়েন তবে আমার সাথে অন্যটি নিয়ে কাজ শুরু করার মতো কিছুই নেই: "বোকা প্রোগ্রামটি কোনও সংগীত বাজায় না"; না হলেও স্পষ্ট হিসাবে খারাপ হিসাবে ত্রুটি গোপন যেমন আসলে একটি ব্যতিক্রম যা গিলতে হয়েছিল আসলে নিক্ষিপ্ত , আপনি কি এখনও সম্ভাব্য অন্যের যখন কিছু চলতে চলতে ভুল করে নষ্ট করছি ... এত সুন্দর হতে হবে এবং তাদের দিকে একটি ব্যতিক্রম নিক্ষেপ করা।