View Full Version : سوال: تهیه کلاسی از نوع SQLException
vahid83
سه شنبه 07 اردیبهشت 1389, 16:18 عصر
سلام به همگی دوستان جاوا کار...
من کدهامو داخل try catch می ذارم و این طوری خطاها(یا همون استثناء) کدهام رو پیدا می کنم که البته بیشتر این استثنائات مربوط به دیتابیسمه (کاری که فکر کنم همیشه مرسومه)
ولی مدیر پروژه ازم خواسته تا این خطاها مستقیماً از سیستم به کاربر نمایش داده نشه، چون این طوری کار رو برای هکرها راحت تر میکنم و اونا با نمایش این خطاها از اطلاعات دیتابیس بیشتر اطلاع پیدا می کنند. حالا ازم خواسته تا کلاسی تهیه کنم که پیغامهای SqlException رو به صورت فارسی نمایش بده. من راجع به excetion در جاوا زیاد خوندم (البته تو منابع لاتین) ولی هنووز توجیه نشدم که برای exception ای که تصوری ازش ندارم چه کلاسی تهیه کنم. :گریه:
از دوستانی که در این زمینه اطلاعی دارن ممنون میشم که راهنماییم کنن.
بازم ممنون... :تشویق:
javanerd
چهارشنبه 08 اردیبهشت 1389, 09:42 صبح
سلام به همگی دوستان جاوا کار...
من کدهامو داخل try catch می ذارم و این طوری خطاها(یا همون استثناء) کدهام رو پیدا می کنم که البته بیشتر این استثنائات مربوط به دیتابیسمه (کاری که فکر کنم همیشه مرسومه)
ولی مدیر پروژه ازم خواسته تا این خطاها مستقیماً از سیستم به کاربر نمایش داده نشه، چون این طوری کار رو برای هکرها راحت تر میکنم و اونا با نمایش این خطاها از اطلاعات دیتابیس بیشتر اطلاع پیدا می کنند. حالا ازم خواسته تا کلاسی تهیه کنم که پیغامهای SqlException رو به صورت فارسی نمایش بده. من راجع به excetion در جاوا زیاد خوندم (البته تو منابع لاتین) ولی هنووز توجیه نشدم که برای exception ای که تصوری ازش ندارم چه کلاسی تهیه کنم. :گریه:
یک راه حل ممکنه که این باشه.
اول کلاسهای Exception مناسب تهیه میکنیم.
public class MyException extends RuntimeException{ // یا هر یک از زیرکلاسهای Exception که مناسبتر هست
public MyException(String description){
super(description);
}
}
بعد هرجا یک SqlException توی برنامه catch شد یک استثنا از نوع مناسب شلیک میکنیم.
این استثنا ممکنه توی تابعهای دیگه مدیریت بشه.
try{
...}catch(SqlException ex){
throw new MyException("پیام خطای مناسب به فارسی یا هر زبان دیگر");
}
adinochestva
چهارشنبه 08 اردیبهشت 1389, 09:53 صبح
خیلی با اینکه پیغام ها را در بلوک catch بنویسید موافق نیستم چون دوباره کاری زیاد خواهید داشت و ...
بهتره در همون کلاسی child بر اساس کد exception یا msg پیغام مناسب رو تعیین کنید
vahid83
چهارشنبه 08 اردیبهشت 1389, 10:31 صبح
به خاطر توجهتون خیلی ممنون...:لبخندساده:
دوست عزیز javanerd (http://www.barnamenevis.org/forum/member.php?u=140197)، یعنی برای استثنائات مختلف فقط یه پیغام نمایش بدم! منظورم اینه که امکان داره مثلاً 2 تا استثناء پشت هم اتفاق بیفته، که کدهای مختلف هم دارن. آیا برای این موارد هم می تونم از این کد استفاده کنم؟
دوست عزیز adinochestva (http://www.barnamenevis.org/forum/member.php?u=73608)، به این هم فکر کردم، ولی مشکل اینجاست که من لیستی از کدهای exception رو ندارم که بتونم براشون پیغام مناسب فارسی تهیه کنم. اگه هم تونستم بدستشون بیارم، به نظرتون یه کلاس براش تعریف کنم یا یه table تو دیتابیسم ؟ میشه برای شفاف شدن صحبتتون یه نمونه کد برام بذارید، یه دنیا ممنون...
javanerd
چهارشنبه 08 اردیبهشت 1389, 11:08 صبح
خیلی با اینکه پیغام ها را در بلوک catch بنویسید موافق نیستم چون دوباره کاری زیاد خواهید داشت و ...
بهتره در همون کلاسی child بر اساس کد exception یا msg پیغام مناسب رو تعیین کنید
lموافقم، با این حال حتی توی کلاس child هم بهتره تمام رشتهها externalize شده باشند و توی کد هیچ رشتهای وجود نداشته باشه.
javanerd
چهارشنبه 08 اردیبهشت 1389, 11:10 صبح
به خاطر توجهتون خیلی ممنون...:لبخندساده:
دوست عزیز javanerd (http://www.barnamenevis.org/forum/member.php?u=140197)، یعنی برای استثنائات مختلف فقط یه پیغام نمایش بدم! منظورم اینه که امکان داره مثلاً 2 تا استثناء پشت هم اتفاق بیفته، که کدهای مختلف هم دارن. آیا برای این موارد هم می تونم از این کد استفاده کنم؟
شما میتونید هر چند تا زیر کلاس که لازم باشه برای انواع مختلف خطا درست کنید.
javanerd
چهارشنبه 08 اردیبهشت 1389, 11:12 صبح
به خاطر توجهتون خیلی ممنون...:لبخندساده:
دوست عزیز adinochestva (http://www.barnamenevis.org/forum/member.php?u=73608)، به این هم فکر کردم، ولی مشکل اینجاست که من لیستی از کدهای exception رو ندارم که بتونم براشون پیغام مناسب فارسی تهیه کنم. اگه هم تونستم بدستشون بیارم، به نظرتون یه کلاس براش تعریف کنم یا یه table تو دیتابیسم ؟ میشه برای شفاف شدن صحبتتون یه نمونه کد برام بذارید، یه دنیا ممنون...
به نظر من برای هر نوع خطا یک کلاس لازم هست.
adinochestva
چهارشنبه 08 اردیبهشت 1389, 11:41 صبح
لیست رو اینجا می تونید پیدا کنید :
http://java.sun.com/javase/6/docs/api/java/lang/Exception.html
---
ایشون فقط می خوان یک ترجمه فارسی داشته باشنده به نظر زیاد جالب نیست فقط به منظور ترجمه برای هر نوع یک کلاس بزارند و بعد چک کنند اگر خطای مربوطه فلان بود فلان کلاس throw بشه
javanerd
چهارشنبه 08 اردیبهشت 1389, 11:59 صبح
لیست رو اینجا می تونید پیدا کنید :
http://java.sun.com/javase/6/docs/api/java/lang/Exception.html
---
ایشون فقط می خوان یک ترجمه فارسی داشته باشنده به نظر زیاد جالب نیست فقط به منظور ترجمه برای هر نوع یک کلاس بزارند و بعد چک کنند اگر خطای مربوطه فلان بود فلان کلاس throw بشه
به نکتهی خوبی اشاره کردید. با شما موافقم.
اما منظور من این نبود. منظور من این هست که خطاهایی که به کاربر نشون داده میشه باید طوری باشه که کاربر ازشون سر در بیاره. SqlException در سطح کاربر نیست، بلکه در سطحی هست که برنامهنویس ازش سر در میاره. ولی مثلا اگر یک کلاس به اسم LoadDataError یا SaveDataError درست کنیم، اونوقت این کلاسها در سطحی از انتزاع که کاربر ازشون سر دربیاره هستند.
حتی اگر خود برنامه از چند لایه تشکیل شده، هر لایه باید Exceptionهایی تعریف کنه که در سطح همون لایه هستند.
من در این مورد خیلی حرف دارم بزنم، ولی احساس میکنم که توی این تاپیک جاش نیست.
vahid83
چهارشنبه 08 اردیبهشت 1389, 12:27 عصر
از شما دوستان عزیز به خاطر کمکهای دوستانتون خیلی خیلی متشکرم.
بازم بهم ثابت شد که این فروم یکی از بهترینهاست (و شاید بهترینه...)
از (javanerd (http://www.barnamenevis.org/forum/member.php?u=140197) و adinochestva (http://www.barnamenevis.org/forum/member.php?u=73608)) هم تقاضا دارم اگه مایل باشید یا تو این تاپیک یا هر تاپیک دیگه در مورد مدیریت exception ها به افراد تازه کاری مثل من آموزش مختصری بدید، چون تا حالا به وسعت این مسئله پی نبرده بودم!
ان شاءا... 100 در دنیا، 1000 در آخرت خیرشو ببینید...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.