আমি কীভাবে জাভাস্ক্রিপ্টে একটি ব্যতিক্রম পুনর্বিবেচনা করতে পারি, তবে স্ট্যাকটি সংরক্ষণ করতে পারি?


151

জাভাস্ক্রিপ্টে, ধরুন কোনও ব্যতিক্রম ঘটলে আমি কিছু পরিষ্কার করতে চাই, তবে ব্যতিক্রমটি স্ট্যাকটি প্রচার করা চালিয়ে দিন, যেমন:

try {
  enterAwesomeMode();
  doRiskyStuff(); // might throw an exception
} catch (e) {
  leaveAwesomeMode();
  throw e;
}
doMoreStuff();
leaveAwesomeMode();

এই কোডটির সাথে সমস্যাটি হ'ল ব্যতিক্রমটি ধরা এবং পুনর্বিবেচনার ফলে স্ট্যাকের সন্ধানের তথ্যটি সেই বিন্দু পর্যন্ত নষ্ট হয়ে যায়, যাতে ব্যতিক্রম যদি পরবর্তীকালে আবার ধরা পড়ে তবে স্ট্যাকের উপরের দিকে উচ্চতর হয়, স্ট্যাক ট্রেসটি কেবল পুনরায় নীচে চলে যায় -throw। এটি স্তন্যপান করে কারণ এর অর্থ এটিতে ব্যতিক্রমটি ছুঁড়ে ফাংশনটি ধারণ করে না।

যেমনটি দেখা যাচ্ছে, চেষ্টা করুন..ফিনিয়ালি একই আচরণ রয়েছে, কমপক্ষে ক্রোমে (এটি হ'ল সমস্যাটি অবশ্যই পুনরায় নিক্ষেপ নয়, তবে কোনও ব্যতিক্রম হ্যান্ডলার ব্লকের উপস্থিতি নেই))

জাভাস্ক্রিপ্টে কোনও ব্যতিক্রম পুনর্বিবেচনার সাথে এর সাথে যুক্ত স্ট্যাকের ট্রেস সংরক্ষণের কোনও উপায় কি জানেন? ব্যর্থতা, ব্যতিক্রম-নিরাপদ ক্লিনআপ হ্যান্ডলার যুক্ত করার অন্যান্য উপায়গুলির পরামর্শ সম্পর্কে কীভাবে, যখন কোনও ব্যতিক্রম ঘটে তখন পুরো স্ট্যাক ট্রেসগুলি ক্যাপচার করার সময়?

কোন পয়েন্টার জন্য ধন্যবাদ :)


উত্তর:


78

এটি ক্রোমের একটি বাগ। একটি ব্যতিক্রম পুনর্বিবেচনা কল ট্রেস সংরক্ষণ করা উচিত।

http://code.google.com/p/chromium/issues/detail?id=60240

আমি কোন কাজের কথা জানি না।

শেষ পর্যন্ত সমস্যাটি দেখছি না। আমি ব্যতিক্রমগুলি চূড়ান্তভাবে শেষের পরে কিছু ক্ষেত্রে ত্রুটি কনসোলে প্রদর্শিত হচ্ছে না দেখছি, তবে এটি বিকাশের ক্ষেত্রে স্থির হয়ে গেছে বলে মনে হচ্ছে।


5
এই সমস্যাটি তখন থেকেই বন্ধ রয়েছে।
জাকারি বার্নস

24

একটি ত্রুটিযুক্ত বস্তুর স্ট্যাক বৈশিষ্ট্য ত্রুটিযুক্ত বস্তু হিসাবে একই সময়ে তৈরি করা হয়, এটি নিক্ষেপ করা বিন্দুতে নয়। মূর্খতার কারণে তারা প্রায়শই একই থাকে

   নতুন ত্রুটি নিক্ষেপ ("বার্তা");

এবং আপনি কোডটি যেমন লিখেছেন ঠিক সেভাবে ব্যবহার করলে , ত্রুটিটি পুনর্বিবেচনা করলে স্ট্যাকের সম্পত্তি পরিবর্তন হবে না


5
এটি সত্য নয় (সম্ভবত প্ল্যাটফর্ম নির্ভর)। আমি এখন যে জেএস ইঞ্জিনটি ব্যবহার করছি (রাইনো) আসল স্ট্যাকটি হারাতে নিক্ষেপ বিবৃতিতে স্ট্যাকটি পুনরায় সেট করে।
টেড বিঘাম

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