** کینگ کد : بزرگترین مرجع دانلود سورس کد های برنامه نویسی اندروید، ویندوز و جدید ترین اسکریپت های روز دنیا **

-----------------------------------------------

** سورس فروشگاه اینترنتی مارکیت فارسی برای اندروید - سورس فروشگاه اینترنتی موکتز فارسی برای اندروید **

-----------------------------------------------

** اسکریپت چیست؟ و چگونه از آن استفاده کنیم؟ (آموزش کامل نصب اسکریپت) **

-----------------------------------------------

** (160 جلسه) آموزش کامل و 0 تا 100 برنامه نویسی PHP **

-----------------------------------------------

** دانلود فیلم آموزشی فتوشاپ فارسی **

-----------------------------------------------

آخرین مطالب ارسال شده

مطالب بر اساس ماه

آموزش مجازی

تبلیغات

پست ثابت

برای ورود کلیک کنید

تبلیغات

پست ثابت

برای ورود کلیک کنید

چند راه برای جلوگیری از NullPointerException

جلوگیری و حل ارور NullPointerException در برنامه نویسی اندروید

دربرنامه نویسی اندروید (جاوا) یکی از متداول ترین ارور ها NullPointerException هست ، و اگر بتونیم بیشتر این ارور ها را قبل از وقوع  جلوگیری کنیم ، برنامه ای روان و بدون اکسپشن های اعصاب خورد کن خواهیم داشت.

NullPointerException  زمانی رخ میده که قصد داریم مثلا از یک لیستی که null هست ، عملیات get یا size  یا هر عملیات دیگری  را انجام دهیم. ویا یک رشته (String) را می خواهیم با یک رشته دیگر که مقدار آن null  هست مقایسه گنیم و یا در اندروید و مخصوصا در صفحاتی که از چند thread استفاده شده  یک thread وظیفه گرفتن اطلاعات از اینترنت را دارد و بعد از دریافت اطلاعات قصد بروز رسانی صفحه (UI) را دارد  اما قبل از اتمام کار صفحه بسته شده است و زمان استفاده از context ارور NullPointerException  می دهد .

در این جا چند روش  ساده برای جلوگیری از این  اکسپشن را که از لینک زیر برداشته ام قرار میدهم :

http://javarevisited.blogspot.nl/2013/05/ava-tips-and-best-practices-to-avoid-nullpointerexception-program-application.html

۱ : زمان استفاده از متد  equals() و  equalsIgnoreCase()   رشته ای را که مطمئن هستید null نیست اول قرار دهید :


 

به مثال توجه کنید : در رشته ها فرقی نمی کند که به کدام حالت بنویسیم اما  نوشتن به صورت اول امکان بروز اکسپشن در صورت null بودن را دارد در صورتی که در  حالت دوم خود متد  euals() این اکسپشن را مدیریت می کند .

۲ . برای گرفتن مقدار رشته (String) به جای toString() از String.valueof() استفاده کنید :

BigDecimal bd = getPrice();
System.out.println(String.valueOf(bd)); //doesn’t throw NPE
System.out.println(bd.toString()); //throws “Exception in thread “main” java.lang.NullPointerException”

//StringUtils methods are null safe, they don’t throw NullPointerException
System.out.println(StringUtils.isEmpty(null));
System.out.println(StringUtils.isBlank(null));
System.out.println(StringUtils.isNumeric(null));
System.out.println(StringUtils.isAllUpperCase(null));

Output:
true
true
false
false

اگر بر روی یک شئ که null باشده toString() را فراخوانی کنید ، NullPointerException رخ می دهد ، در صورتی که اگر از String.valueOf() استفاده کنید در صورت null بودن مقدار “null” را برمیگرداند .

۳ . از متد و لایبرری های امن (safe) استفاده کنید :

لایبرری های زیادی هستند که زمان null بودن اکسپشن نمی دهند :

مثلا به جای استفاده از isEmpty() می توانید از StringUtils.isEmpty(null)استفاده کنید :

//StringUtils methods are null safe, they don’t throw NullPointerException
System.out.println(StringUtils.isEmpty(null));
System.out.println(StringUtils.isBlank(null));
System.out.println(StringUtils.isNumeric(null));
System.out.println(StringUtils.isAllUpperCase(null));

Output:
true
true
false
false

۴ . در متد ها مخصوصا متد هایی که قصد برگرداندن یک لیست را دارند null برنگردانید :

به جای برگرداندن null یک کالکشن خالی یا یک مقدار خالی را برگردانید (مثلا یک رشته خالی “” ) در این صورت از بروز این اکسپشن در جاهایی که از این متد استفاده کرده اید جلوگیری می کنید :

public List getOrders(Customer customer){
List result = Collections.EMPTY_LIST;
return result;
}

 

در مثال بالا با استفاده از Collections.EMPTY_LIST یک لیست خالی بر می گردانیم.


سورس فروشگاه اینترنتی اندروید سورس کتاب اندروید
دانلود سورس موبوگرام دانلود سورس تلگرام

جعبه دانلود

ورژن :

پسورد فایل ها : www.kingcode.ir

قابل توجه مدیران وبسایت های ایرانی : تمامی مطالب سایت کینگ کد بصورت اختصاصی ترجمه و منتشر می شوند و کپی برداری از آن ها فقط با ذکر نام منبع مجاز است.

  • 1. از نوشتن دیدگاه های غیر مرتبط با پست جدا خودداری کنید ؛ پرسش های غیرمرتبط را در انجمن مطرح کنید
  • 2. در خواست های خود برای اسکریپت ها و افزونه ها را فقط از طریق تماس با ما ارسال کنید.
  • 3. فقط فارسی تایپ کنید و برای سوال مجدد در صفحه از دکمه پاسخ دادن استفاده نمایید.
  • 4. قبل از ارسال کامنت حتما متن پست + نظرات سایر دوستان را بخوانید .
  • 5. نظر شما ممکن است بدون پاسخ تایید شوند که در این صورت باید منتظر پاسخ از سوی دیگر کاربران باشید .