تیکه پاره های جاوا
528 subscribers
93 photos
24 videos
7 files
58 links
سلام خوش اومدید. اینجا یادداشت ها و تکه های جاوا رو کنار هم قرار میدیم :) مطالب کاملا اختصاصی و دستنویس هستند. کپی فقط با ذکر منبع و آیدی کانال❤️

📝برای تدریس پیام دهید
محمدرضا عظیمی‌فرد
🆔 @mrvj475
Download Telegram
💎 ساختار Try With Resources

🔅 یه حالت دیگه از ترای کچ داریم به نام Try With Resources که از نسخه 7 جاوا اضافه شده.
بیشترین استفاده رو با ریسورس ها داره. ریسورس اصطلاحا به ابجکتی گفته میشه که بعد از اتمام کار لازمه که کلوز بشه. مثل فایل ها، سوکت ها و... پیش از این بستن ابجکت لازم به تعریف بخش فاینلی داشت. مثلا:
FileWriter fw = null;
try{
fw = new FileWriter("....txt");
...
}catch(IOException e){
...
}finally{
fw.close();
}
بخش فاینلی چه درصورتی که برنامه دارای خطا یا چه بدون خطا بود در هر صورت اجرا میشه.
اما با Try With Resources احتیاجی به بخش فاینلی نیست و خود استیتمنت بصورت خودکار فایل رو کلوز میکنه. کلوز کردن فایل میتونه جلوی خیلی از مشکلات از جمله خراب شدن فایل و ... رو بگیره.
🔅 باز نویسی کد بالا با ساختار ترای ویز ریسورسز:
try(FileWriter fw = new FileWriter("...txt")){
...
}catch(IOException e){
...
}

#Try_Catch #Try_With_resources #File #IO #FileWriter #close #Exception

@pieceJava
💎 استثنای NullPointerException و چگونگی رفع خطا

#یکبار_برای_همیشه
🟨 استثنای NullPointerException یک نوع استثنای در زمان اجراست (RuntimeException). این استثنا زمانی رخ میدهد که بخواهیم از ابجکت (شی، نمونه) ای استفاده کنیم که مقداری برابر null دارد.

🔗 در مورد کلیدواژه null از اینجا بخوانید

🔅در موارد زیر استثنای NullPointerException رخ میدهد:
💬 (برای خوانایی بهتر گوشی رو در حالت افقی قرار بدین و یا از تلگرام دسکتاپ استفاده کنین)
1️⃣ فراخوانی متد از یک ابجکت نال:
public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
2️⃣ دسترسی یا تغییر مقدار یک فیلد در یک ابجکت نال:
public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
Test instance = null;
instance.xField = 5;
}
}
class Test{
int xField;
}
3️⃣ تلاش برای دسترسی به یک خانه نال در آرایه:
💬این مورد خیلی مهمه. فرض کنین یه ارایه با ظرفیت ذخیره 100 دانشجو داره. اونوقت اگه قسمتی از ارایه همچنان پر نشده باشه و به هر دلیلی بخواین ارایه رو پیمایش کنین، باید حواستون به خطای NullPointerException باشه :)
public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
Object[] x = null;
System.out.println(x[0]);
}
}
4️⃣ بررسی طول یک آرایه در زمان اجرا درصورتی که مقدار نال داشته باشد:
public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
Object[] x = null;
System.out.println(x.length);
}
}
5️⃣ زمانی که null پرتاب (thrown) شود.
public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
throw null;
}
}
6️⃣ ارسال مقدار نال به یک متد:
public class ITHOOLOO {
//@pieceJava
public static void main(String[] args) {
println(null);
}
private static void println(String s){
System.out.println(s.toLowerCase());
}
}

⁉️ چطور این استثنا رو شناسایی کنیم؟
شناسایی NullPointer... بسیار ساده است. به خروجی ایجاد شده بواسطه خطا نگاه کنید و خواهید دید که خطای NullPointerException ایجاد شده دقیقا از چه کلاسی و از چه خطی رخ داده است. بعد از پیدا کردن محل خطا، بررسی کنید که کدام یک از موارد ذکر شده باعث رخ دادن این استثنا شده است.

⁉️ چطور این استثنا رو رفع کنیم؟
در هر کجا که با ابجکت ها سر و کار دارید، سعی کنید شرایط null بودن ابجکت رو هم بررسی کنید و یا در بدنه متد، ورودی ها را کنترل کنید.
🔰 برای مثال:
private static void println(String s){
if(s!=null)
System.out.println(s.toLowerCase());
}
🔰 مثال 2:
if(user!=null && user.getUserName() !=null) {
System.out.println("User Name: "+user.getUserName().toLowerCase());
}
if(user!=null && user.getUserName() !=null) {
System.out.println("User ID: "+user.getUserId().toLowerCase());
}
———
#null #nullpointerexception #exception #uncheckedexception

☕️@pieceJava
👍8