ম্যাজেন্টোতে ব্যতিক্রম ছোঁড়ার পছন্দের উপায় কী?


45

নীচের সমস্ত পদ্ধতি মেগেন্টো কোর ব্যবহার করা হয় যাতে কোনটি পছন্দনীয় (বা সর্বশেষ "সেরা অনুশীলন") উপায়?

  • Mage::throwException('Some Message')- 732 ব্যবহার
  • throw new Exception('Some Message')- 419 ব্যবহার
  • throw Mage::exception('Vendor_Module', 'Some Message')- 94 ব্যবহার
    (একটি Vendor_Module_Exceptionশ্রেণি তৈরি করা প্রয়োজন )

2
আপনি কীভাবে ফাঁসি গণনা পেয়েছেন? আমি এটি জানতে কৌতুহল চাইছি !!!
রাজীব কে টমি

1
@ রাজিভকটোমী আমি কমান্ড লাইন থেকে একটি গ্রেপ অনুমান করছি - এরকম কিছু grep -r throwException /path/to/magento/app/code/core | wc -l ; grep -r throw\ new /path/to/magento/app/code/core | wc -l ; grep -r throw\ Mage /path/to/magento/app/code/core | wc -l- যদিও এর জন্য প্রয়োজন যে আপনিও জানেন যে আপনি কি জানেন।
ডগ ম্যাকলিয়ান

উত্তর:


36

কলটি Mage::throwExceptionনির্দিষ্ট Mage_Core_Exceptionবিভিন্নতার ব্যতিক্রম ছুঁড়ে ফেলার জন্য ব্যবহৃত হয় । এগুলি সাধারণত শেষ ব্যবহারকারীর কাছে ত্রুটি বার্তা উপস্থাপন করতে ব্যবহৃত হয়। এর উদাহরণগুলির জন্য, Mage::throwExceptionMage_Checkout মডিউলে একটি তাত্ক্ষণিক অনুসন্ধান করুন , আপনি অনেকগুলি উদাহরণ খুঁজে পাবেন যেখানে ত্রুটি বার্তাটি নিক্ষেপ করার আগে সত্যই অনুবাদ করা হচ্ছে, কারণ এটি শেষ পর্যন্ত সেশন অবজেক্টে যুক্ত হবে এবং ব্যবহারকারীর কাছে প্রদর্শিত হবে ফলাফল পৃষ্ঠা

ব্যবহার new Exceptionবা এর মতো কিছু new My_Custom_Exceptionসাধারণত আপনি যেখানে আবেদনের অভ্যন্তরীণ ত্রুটিগুলি ছুঁড়ে মারছেন সেখানে সম্ভবত এমন ত্রুটিগুলি সম্ভবত সম্ভবত শেষ ব্যবহারকারীর কাছে প্রদর্শিত হবে না। হতে পারে আপনি এগুলি ধরেন এবং এগুলিকে কৌতূহলীভাবে পরিচালনা করুন (কিছু ক্ষেত্রে স্বতন্ত্র ব্যতিক্রম প্রকারের জন্য ভাল ব্যবহার), বা অন্য সময়ে যখন তারা ধরা পড়ে, লগইন করে এবং অনুরোধটিকে আরও সাধারণ জেনারেল ত্রুটি বার্তা প্রদর্শিত হয় যা ব্যবহারকারীর কাছে প্রদর্শিত হয় ততক্ষণে শেষ করে দেয়।

আমি ব্যক্তিগতভাবে কখনও ব্যবহার করি নি Mage::exceptionতবে এটি প্রতিটি মডিউলের জন্য একটি অনন্য ব্যতিক্রমধর্মী ধরণের নকশার চেষ্টা বলে মনে হচ্ছে। এটি ব্যবহারে কোনও ক্ষতি হবে না, কারণ এটি মূলত একটি কারখানা যা প্রদত্ত মডিউলটির জন্য একটি ব্যতিক্রম উদাহরণ দেয়, যদিও (এই লেখার সময়) এটি ওভাররাইডের মতো বিষয়গুলির জন্য কোনও সমর্থন বাস্তবায়ন করে না।


আমি এখানে আপনার যুক্তি পছন্দ করি - এটি সাধারণ ইংরেজী ভাষায় :)
ফিলিঙ্কল

আমি Mage::throwException('my error message')আমার হেল্পার ক্লাসে ফোন করেছি কিন্তু কিছুই হয় না ??
কালো 12

16

আপনি হার্ড অংশটি করেছেন, তারা কতবার ব্যবহৃত হচ্ছে তা খুঁজে বের করে :)

টিএল; ডাঃ আইএমএইচও, আপনার Mage::throwExceptionসর্বাধিক প্রায়শই ব্যবহার করা উচিত , Mage::exceptionযখন আপনার মডিউলটির ক্ষেত্রের বাইরে থেকে কোনও ব্যতিক্রম প্রকার উত্থাপন করার প্রয়োজন হয়, যদি সেশন মেসেজিংয়ের ক্ষমতা এবং আপনি না করেন এমন কারণ ছাড়া অন্য কোনও কারণে throw newএটির সামনে টাইপ করতে হবে।

এখানে ভাঙ্গন:

  • Mage::throwExceptionমূলত আবৃত একটি Mage_Core_Exception($message)অতিরিক্ত ক্রিয়াকলাপের সাথে একটি getSingletonশৃঙ্খলাবদ্ধ কলের মাধ্যমে একটি সেশনে ব্যতিক্রম যুক্ত করতে সক্ষম হবার জন্য functionaddMessage
  • new Exception()ব্যতিক্রম ছোঁড়ার মূল পিএইচপি উপায়, তবে আপনাকে throwকীওয়ার্ডটি ব্যবহার করতে হবে এবং অন্য দুটি অতিরিক্ত কার্যকারিতা সহ মোড়ক হিসাবে সম্ভবত সম্ভবত কিছুটা বড় "পারফরম্যান্ট"।
  • উল্লিখিত হিসাবে, Mage::exceptionএকটি মোড়ক এছাড়াও, কিন্তু আপনি নিজের ব্যতিক্রম ক্লাস ইনস্ট্যান্ট করার অনুমতি দেয় সুবিধা আছে। এটি যদি সত্যিই সহায়ক হয় আপনি যদি প্লাগইন বিকাশকারী হন এবং আলাদাভাবে ব্যতিক্রমগুলির জন্য কাস্টম লগ তৈরি করতে হয় তবে কার্যকারিতা ছাড়াই logException(যেমন, কোনও স্ট্যাক ট্র্যাক নেই) বা ব্যতীত কোনও এপিআই কল করতে চান ইত্যাদি It's আপনি throwএকটি পৃথক পৃথক শ্রেণীর ধরণের ব্যতিক্রম করতে চান , উদাহরণস্বরূপ, যা ঘটে তা Mage_Paypalঘন ঘন একটি Mage_Coreব্যতিক্রম প্রকার উত্থাপন ।

সময় সম্পর্কে কথা বলুন ... 10 সেকেন্ডেরও কম দূরে apart :)
ডেভিডালগার

মধ্যে পছন্দের যুক্তি new Exception()এবং Mage::exception()শ্রেষ্ঠ সময়ে আমাকে স্পষ্ট নয়। আমি যখন Mage::exception()কোডটি দেখি, তখন আমি কোনও উপকার দেখতে পাচ্ছি না throw $exception, এটি আসলে আপনার ব্যতিক্রম শ্রেণিটি বেছে নেওয়ার ক্ষেত্রে বাধা দেয় যা আপনি শ্রেণীবদ্ধকরণের উপসর্গ হিসাবে, (আপনার / একটি) এক্সটেনশনের জন্য স্ট্যান্ডার্ড অটো-লোডিং কনফিগার করেছেন, স্থির বিশ্লেষণকে বাধা দেয় এবং এটি সরাসরি ছুঁড়ে দেওয়া ব্যতীত আপনাকে অতিরিক্ত পদ্ধতিগুলিতে কল করার অনুমতি দেয় না।
হ্যাক্রে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.