আপনি এখানে ট্র্যাক বন্ধ।
আপনার কাছে ইতিমধ্যে একটি দুর্দান্ত, বড় ত্রুটির বার্তা রয়েছে। কেন পৃথিবীতে আপনি এমন কোড লিখতে চান যা প্রতিটি কমান্ডের$?
পরে পরিষ্কারভাবে পরীক্ষা করে ? এটি অত্যন্ত জটিল এবং ত্রুটিযুক্ত প্রবণ। সঠিক সমাধানটি চেক$?
করা বন্ধ করুন ।
পরিবর্তে, পাওয়ার শেলের বিল্ট ইন মেকানিজমটি আপনার জন্য ফুটিয়ে তুলুন। আপনি সর্বোচ্চ স্তরে ত্রুটি পছন্দ সেট করে এটি সক্ষম করুন :
$ErrorActionPreference = 'Stop'
আমি এটি লিখি প্রতিটি একক স্ক্রিপ্টের শীর্ষে রেখেছি এবং এখন আমাকে চেক করতে হবে না $?
। এটি আমার কোডকে বিস্তৃত সহজ এবং আরও নির্ভরযোগ্য করে তুলেছে।
যদি আপনি এমন পরিস্থিতিতে চলে যান যেখানে আপনার সত্যিকার অর্থে এই আচরণটি অক্ষম করার দরকার হয় catch
তবে আপনি হয় ত্রুটি করতে পারেন বা সাধারণ ব্যবহার করে কোনও নির্দিষ্ট ফাংশনে একটি সেটিংস পাস করতে পারেন -ErrorAction
। আপনার ক্ষেত্রে, আপনি সম্ভবত আপনার প্রক্রিয়াটি প্রথম ত্রুটিতে থামাতে চান, ত্রুটিটি ধরুন এবং তারপরে এটি লগ করুন।
মনে রাখবেন যে বহিরাগত এক্সিকিউটেবলগুলি ব্যর্থ হয়ে গেলে (প্রথাগতভাবে প্রস্থান কোড ননজারো) এগুলি কেসটি পরিচালনা করে না, সুতরাং আপনার যদি এখনও $LASTEXITCODE
কোনও অনুরোধ করা হয় কিনা তা পরীক্ষা করার দরকার নেই। এই সীমাবদ্ধতা সত্ত্বেও, সেটিংটি এখনও প্রচুর কোড এবং প্রচেষ্টা সাশ্রয় করে।
অতিরিক্ত নির্ভরযোগ্যতা
আপনি কঠোর মোড ব্যবহার করে বিবেচনা করতে পারেন :
Set-StrictMode -Version Latest
আপনি যখন অস্তিত্বহীন পরিবর্তনশীল এবং অন্যান্য উদ্ভট পরিস্থিতিতে ব্যবহার করেন তখন পাওয়ারশেলটি নিঃশব্দে এগিয়ে যাওয়া থেকে বাধা দেয়। ( -Version
এটি কী কী সীমাবদ্ধ করে সে সম্পর্কে বিশদের জন্য প্যারামিটারটি দেখুন ))
এই দুটি সেটিংসের সংমিশ্রণ পাওয়ারশেলকে অনেক বেশি ব্যর্থ-তাত্পর্যপূর্ণ ভাষায় পরিণত করে, যা এতে প্রোগ্রামিংকে অত্যন্ত সহজ করে তোলে।