+1 امتیاز
قبل در برنامه نویسی توسط (7.2هزار امتیاز)
امکان try-with-resources که در جاوا 7 ارائه شده چیست و چه فرقی با بلوک های try-catch-finally پیشین دارد؟

1 پاسخ

+3 امتیاز
قبل توسط (1.1هزار امتیاز)
ویرایش شده قبل توسط
 
بهترین پاسخ

در بلاک های try-catch-finally شما پس از باز کردن یک منبع (مانند یک فایل) در قسمت try باید در بلاک catch به exception های آن رسیدگی می کردید و در نهایت در بلاک finally منبع را close می کردید:

		BufferedReader br = null;
 
		try {
 
			String line;
 
			br = new BufferedReader(new FileReader("C:\\testing.txt"));
 
			while ((line = br.readLine()) != null) {
				System.out.println(line);
			}
 
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (br != null)br.close();
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}

اما در بلاک try-with-resources وقتی بلاک try خاتمه پیدا می کند منابع باز بصورت خودکار close می شود و دیگر نیازی به بلاک finally نیست:

		try (BufferedReader br = new BufferedReader(new FileReader("C:\\testing.txt")))
		{
 
			String line;
 
			while ((line = br.readLine()) != null) {
				System.out.println(line);
			}
 
		} catch (IOException e) {
			e.printStackTrace();
		} 

هر کلاسی که می خواهد در ساختار Try-with-resources استفاده شود باید اینترفیس AutoClosable را پیاده سازی کرده باشد. 

سوالات مشابه

0 امتیاز
1 پاسخ 351 بازدید
+1 امتیاز
1 پاسخ 355 بازدید
+2 امتیاز
2 پاسخ 1.1هزار بازدید
0 امتیاز
1 پاسخ 301 بازدید
+1 امتیاز
1 پاسخ 597 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+2 امتیاز
1 پاسخ 320 بازدید
0 امتیاز
1 پاسخ 471 بازدید
+1 امتیاز
1 پاسخ 430 بازدید
...