PDA

View Full Version : سوال: در جاوا throws Exception چیست؟



Sina.iRoid
چهارشنبه 05 شهریور 1393, 11:48 صبح
سلام. من این برنامه رو نوشتم:


public class DriverClass {

public static void main(String[] args) throws Exception {

String s = "";
char ch = ' ';

while (ch != '\r') {
ch = (char) System.in.read();
s += ch;
}
System.out.print(s);
}
}


می خوام بدونم معنی throws Exception چیه؟ وقتی نمی نویسم از متغیر char ایراد میگیره.
ممنون اگر راهنماییم کنید.

ahmad.mo74
چهارشنبه 05 شهریور 1393, 11:59 صبح
اون Eception برای System.in.read هست چون ممکنه موقع read کردن I/O Exception به هر دلیلی رخ بده

در ضمن سعی کن هیچوقت برای String از + یا =+ استفاده نکن، بدترین کار ممکنه...به جاش از StringBuilder یا StringBuffer استقاده کن که متد append دارن یا حداقل اگر از String استفاده میکنی از متد concat استفاده کن

محمد فدوی
چهارشنبه 05 شهریور 1393, 14:38 عصر
throws Exception
این دستور اعلام میکنه که این تابع ممکنه یه Exception ایجاد کنه. با اینکار باید اون کسی که این تابع رو فراخوانی میکنه اقدامات لازم رو برای مدیریت این استثناء (قرار دادنش توی بلوک try...catch) انجام بده. توی زبان هایی که این قابلیت وجود نداره، هیچجوری به جز مراجعه به مستندات اون تابع معلوم نمیشه که این تابع ممکنه خطایی رو صادر کنه یا نه... و این یه قابلیت خوبه.



هیچوقت برای String از + یا =+ استفاده نکن

حرفتون اکثر مواقع درسته، ولی نه همیشه! در واقع در زبان جاوا اصلا استفاده از + برای الحاق رشته ها مجاز نیست!! این یه کمکه که کامپایلر javac به برنامه نویس میکنه و مثلا این کد:


String str = someString + someInteger + someDouble + anOtherString;

هنگام کامپایل به این کد تبدیل میشه:


String str = new StringBuilder().append(someString).append(someInte ger).append(someDouble).append(anOtherString).toSt ring();

منبع (http://stackoverflow.com/questions/693597/is-there-a-difference-between-string-concat-and-the-operator-in-java)

اما مواقعی که میخوایم الحاق رو توی چند دستور انجام بدیم و یا الحاق رو توی یه حلقه انجام بدیم بهتره بصورت دستی اینکار رو با StringBuilder انجام بدیم.

موفق باشید.