অন্যান্য উত্তরগুলি নিম্ন স্তরের ত্রুটি-পরিচালনার সুবিধাগুলি বেশ ভালভাবে কভার করেছে যা এই জাতীয় ক্ষেত্রে কার্যকর হবে। আরেকটি পদ্ধতি যা সহায়তা করতে পারে তা হল পরিমিতি। উদাহরণস্বরূপ, আমি আমার প্রারম্ভিককরণ ফাইলটি বিভিন্ন provide
হিসাবে বিভিন্ন হিসাবে উপযুক্ত হিসাবে ব্যবহার করা হয় ( এবং যথাযথ হিসাবে ব্যবহার করে ) বিভক্ত , এবং আমি এই ফাংশন ব্যবহার করে তাদের লোড require
:
(defun my/require-softly (feature &optional filename)
"As `require', but instead of an error just print a message.
If there is an error, its message will be included in the message
printed.
Like `require', the return value will be FEATURE if the load was
successful (or unnecessary) and nil if not."
(condition-case err
(require feature filename)
(error (message "Error loading %s: \"%s\""
(if filename (format "%s (%s)" feature filename) feature)
(error-message-string err))
nil)))
এই পদ্ধতিতে কোনও ফাইল লোড করার সময় একটি ত্রুটি এখনও একটি বার্তা মুদ্রণ করবে, তবে এটি ত্রুটি প্রকৃতপক্ষে ঘটেছিল এমন ফাইলের বাইরের কোনও কিছুর সম্পাদনকে আটকাবে না।
অবশ্যই, এই ফাংশনটি আসলে কোনও require
কল মোড়ানো থেকে আলাদা নয় with-demoted-errors
(আমি জানার আগে এটি লিখেছিলাম with-demoted-errors
), তবে গুরুত্বপূর্ণ বিষয়টি হ'ল আপনি অবশ্যই ড্যানের মিশ্রণ with-demoted-errors
এবং unwind-protect
মোড়ক ছাড়াই প্রয়োজনীয় কিছু বাস্তবায়ন করতে পারেন (সম্ভাব্যভাবে খুব দীর্ঘ) কোড ব্লক।
with-demoted-errors
। আপনি এটির মতো একটি স্ট্রিং যুক্তি যুক্ত করতে পারেন"LOOK OVER HERE!!! %s"
, যাতে আপনি বার্তা বাফারে ত্রুটিটি মিস করার সম্ভাবনা কম।