পাইথনে জিডিএল সঠিকভাবে ব্যতিক্রম বাড়ানোর কোনও উপায় আছে?


12

আমি পাইথনের জিডিএল-এর সাথে কাজ করছি এবং ব্যতিক্রম বাড়াতে জিডিএল পেতে চেয়েছিলাম যাতে আমি তাদের সাথে দরকারী কিছু করতে পারি। উদাহরণস্বরূপ যদি gdal দিয়ে কোনও ফাইল খোলা না যায় O আমি ত্রুটিগুলি sys.stdout এ ফেলে দেওয়ার পরিবর্তে ক্যাপচার করার একটি উপায় চাই।

বর্তমানে আমি gdal.UseExceptions()ফাংশনটি ব্যবহার করার চেষ্টা করেছি তবে একটি সমস্যা জুড়ে এসেছি। কখন gdal.UseExceptions()সেট করা হয় তা নির্দিষ্ট ত্রুটিগুলি লুকিয়ে রাখবে এবং সেগুলি থেকে কোনও ব্যতিক্রম বাড়াবে না। উদাহরণস্বরূপ ERROR 5: Access window out of range in RasterIO() Requested (1,15) of size 25x3 on raster of 26x17অদৃশ্য হয়ে যায় এবং কোনও ব্যতিক্রম উত্থাপিত হয় না। এটি বেশ বিপজ্জনক বলে মনে হচ্ছে।

কোন ধারণা প্রশংসা করা হয়, ধন্যবাদ।


1
ডগ - আমি আজ সকালে ওজিআর / পোস্টগ্রিস ত্রুটি সম্পর্কে জিজ্ঞাসা করা প্রশ্নের সাথে বেশ অনুরূপ (নীচের লিঙ্ক)। জিডিএল ত্রুটি ইস্যুটিকে আমরা হ্যান্ডিশ করার উপায়টি হ'ল জিডিএল / ওজিআর এর সাথে সংযোগযুক্ত সমস্ত কিছু সেটাকে সেট করা এবং তারপরে সংযোগ সম্পর্কে একটি নির্দিষ্ট ত্রুটি বাড়ানোর জন্য একটি কাস্টম ত্রুটি শ্রেণি ব্যবহার করা, যদি জিডিএল / ওজিআর অপারেশনের পরে মানটি এখনও থাকে কোনটিই নয়। gis.stackexchange.com/questions/30607/…
টমাস

1
নীচের মন্তব্যে প্রস্তাবিত হিসাবে আমি টিকিট দায়ের করেছি। এটি এখানে ট্র্যাক করা যাবে: ( trac.osgeo.org/gdal/ticket/4800 )
ডগ

উত্তর:


10
/*
** We do not want to interfere with warnings or debug messages since
** they won't be translated into exceptions.
*/
if (eclass == CE_Warning || eclass == CE_Debug ) {
    pfnPreviousHandler(eclass, code, msg );
}

ইউসেএক্সপেইসস হ্যান্ডলারটি CE_Error, বা CE_Fatal ব্যতীত অন্য কিছু শোনেন না। আপনি যা দেখছেন তা সম্ভবত একটি CE_Warning বা CE_Debug বার্তা (এটির সমান কিনা তা দেখতে আপনার কার্যকরী কলটির রিটার্ন মানটি পরীক্ষা করুন)।

এই "আপত্তি" পাইথন বাইন্ডিংগুলি "পুরাতন" পাইথন বাইন্ডিংসের (যেমন যেখানে চেক-দ্য রিটার্নের ধরণের সমস্ত ত্রুটি পরিচালনার সাথে হাত বোলা হয়) তা নিশ্চিত করার জন্য এই আপস করা হয়েছিল। আমি এই ধরনের চুষতে সম্মত।

টিকিট দায়ের করতে নির্দ্বিধায় যাতে আমরা শোনার জন্য ব্যতিক্রম হ্যান্ডলারটির জন্য স্তরগুলি যুক্ত করতে পারি la

UseExceptions(level=CE_Warning)
UseExceptions(level=CE_Debug)

1
উত্তরের জন্য ধন্যবাদ, এটি পুরোপুরি অর্থবোধ করে এবং আমি এখানে একটি টিকিট ফাইল করার এবং লিঙ্কটি পোস্ট করার চেষ্টা করব!
ডগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.