আমি সাধারণত অভ্যন্তরীণভাবে ব্যতিক্রমগুলি হ্যান্ডেল করতে পছন্দ করি (অর্থাত্ / কল করা ফাংশনের অভ্যন্তর ব্যতীত চেষ্টা করুন / সম্ভবত কোনওটি প্রত্যাবর্তন করবেন না) কারণ অজগরটি গতিশীলভাবে টাইপ করা হয়। সাধারণভাবে, আমি এটিকে রায় বা উপায় হিসাবে বিবেচনা করি, তবে গতিশীলভাবে টাইপ করা ভাষায়, ছোট কারণ রয়েছে যা কলকারীর কাছে ব্যতিক্রমটি পাস না করার পক্ষে স্কেলগুলিকে টিপ দেয়:
- আপনার ফাংশনটিতে যে কেউ ফোন করছেন তাকে ফেলে দেওয়া ব্যতিক্রমগুলি সম্পর্কে অবহিত নয়। আপনি কী ধরনের ব্যতিক্রমের শিকার হচ্ছেন তা জানার জন্য এটি কিছুটা শিল্পের আকারে পরিণত হয় (এবং ব্লকগুলি ব্যতীত জেনেরিকগুলি এড়ানো উচিত)।
if val is None
চেয়ে একটু সহজ except ComplicatedCustomExceptionThatHadToBeImportedFromSomeNameSpace
। সিরিয়াসলি, আমি from django.core.exceptions import ObjectDoesNotExist
সত্যিই সাধারণ ব্যবহারের কেসটি হ্যান্ডেল করার জন্য আমার সমস্ত জাঙ্গো ফাইলের শীর্ষে টাইপ করা মনে রাখতে পছন্দ করি না। স্ট্যাটিক্যালি টাইপ করা বিশ্বে, সম্পাদকটি এটি আপনার জন্য করুন।
সত্যিই, যদিও এটি সর্বদা একটি রায় আহ্বান, এবং আপনি যে পরিস্থিতিটি বর্ণনা করছেন, যেখানে ডাকা ফাংশনটি কোনও ত্রুটি পায় যা এটি সহায়তা করতে পারে না, এটি একটি ব্যতিক্রমকে পুনর্বার উত্সাহ দেওয়ার এক দুর্দান্ত কারণ, যা অর্থবহ। আপনার সঠিক সঠিক ধারণা আছে, তবে আপনি ব্যতিক্রম না হলে স্ট্যাক ট্রেসের চেয়ে আরও অর্থবহ তথ্য সরবরাহ করতে চলেছেন
AttributeError: 'NoneType' object has no attribute 'foo'
যা দশজনের মধ্যে নয় বার, আপনি যদি একটি অপরিবর্তিত কাউকে না ফেরান তবে কলকারী যা দেখবে তা বিরক্ত করবেন না।
(এই ধরণের সমস্ত প্রকারের ফলেই আমি আশা করি যে অজগর ব্যতিক্রমগুলি cause
ডিফল্টরূপে জাভা হিসাবে বৈশিষ্ট্যগুলি ধারণ করে, যা আপনাকে নতুন ব্যতিক্রমগুলিতে ব্যতিক্রমগুলি পাস করতে দেয় যাতে আপনি যা চান তা পুনর্বিবেচনা করতে পারেন এবং সমস্যার মূল উত্সটি কখনই হারাতে পারবেন না))