برخورد با استثناها در جاوا
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
آموزش برخورد با استثناها در جاوا:
در این جلسه با مبحث برخورد با استثناها در ادامه جلسه قبل آشنا میشوید.
throw وthrows: این دو کلمه بسیار به هم شبیه هستند و بارها به اشتباه توسط برنامه نویسان استفاده میشوند. کلمه کلیدی throw داخل متدها استفاده میشود و کاربردش این است که هر زمان، بخواهیم یک رویداد غیرعادی را اطلاع رسانی کنیم، می توانیم از throw استفاده کنیم. به این شکل که شاید جایی از برنامه نیاز باشد یک استثنا را اطلاع رسانی کنیم. به دو صورت میتوانیم از throw استفاده کنیم:
داخل try استفاده کنیم: در واقع با اینکار در محدوده try یک استثنا را فراخوانی میکنیم. امکان دارد قبل از throw دستوراتی را نوشته باشیم و مشروط به شرط خاصی این دستورات را صدا بزنیم. اگر این دستور را در قسمت try بنویسیم عملا آن را به قسمت catch پرتاب میکنیم.
package package1
public class MainClass {
public static void main (string [] args) {
try{
Scanner reader = new Scanner (System.in);
System.out.print(“Enter Number : ”);
int num1=reader.nextInt();
Scanner reader = new Scanner (System.in);
System.out.print(“Enter Number : ”);
int num2=reader.nextInt();
if (num2==0){
throw new Exception();
}
else {
int result=num1/num2;
System.out.println(result);
}
}
catch (Exception e){
System.out.println(“ Error : ” + e.getMessage());
}
}
}
داخل یک متد دیگر فراخوانی کنیم: throw را داخل یک متد دیگر فراخوانی کنیم و آن را پاس دهیم به Exception تا Exception بابت آن پاسخی را برگرداند. throws زمانی اتفاق میافتد که میخواهیم به سیستم اطلاع دهیم که داخل کد متد، یک استثنا وجود دارد و قبل از شروع بلاک متد از کلمه کلیدی trows با نام استثنا استفاده میکنیم. با اینکار دیگر مجاز هستیم از throw استفاده کنیم و عمل پرتاب شدن انجام شود. پس برای استفاده از throw در یک متد از این روش استفاده میکنیم.
package package1
public class MainClass {
public static void main (string [] args) throws Exception{
Scanner reader = new Scanner (System.in);
System.out.print(“Enter Number : ”);
int num1=reader.nextInt();
Scanner reader = new Scanner (System.in);
System.out.print(“Enter Number : ”);
int num2=reader.nextInt();
if (num2==0){
throw new Exception();
}
}
}
ایجاد یک Exception custom:
میتوانیم استثناهای سفارشی ایجاد کنیم. در این مثال یک کلاس برای ایجاد استثنا با نام MyException تعریف میکنیم. میتوانیم در سازنده کلاس فرزند Exception یک ورودی قرار دهیم. یک ورودی از نوع string وارد کردهایم و با متد super آن را فراخوانی میکنیم. دو متد برای بررسی سن و معدل در mainClass تعریف کردهایم و برای بررسی استثناهای برنامه از استثنایی که خودمان تعریف کردیم، استفاده میکنیم.
package package1
public class MyException extends Exception{
public MyException (String str) {
super(str);
}
}
package package1
public class MainClass {
static void AgeValidate(int age) throws MyException{
if (age<1 || age>100){
throw new MyException(“Age Is Not Valid”);
}
else{
System.out.println(“Age Is Valid…”);
}
}
static void AvgValidate(float avg) throws MyException {
if (avg<0 || avg>20){
throw new MyException (“Avg Is Not Ok”);
}
else{
System.out.print(“Avg Is Ok…”);
}
}
public static void main (string [] args) {
try{
Scanner reader = new Scanner(System.in);
System.out.print(“Enter Age : ”);
int age=reader.nextInt();
System.out.print(“Enter Avg : ”);
float avg=reader.nextFloat();
AgeValidate(age);
AvgValidate(avg);
}
catch(Exception e){
System.out.println(“My Error Message…” + e);
}
}
}
دوست درسمنی عزیز، امیدواریم از این آموزش رایگان لذت برده باشید.
برای یادگیری این مبحث می توانید این درس را دانلود کنید و از فایل ها و ویدئو این بخش استفاده کنید.
شما عزیزان می توانید سوالات خود را در بخش انجمن پرسش و پاسخ مطرح کنید و همچنین منتظر انتقادات و پیشنهادات مفید شما در بخش نظرات هستیم تا ما را در کیفیت بهتر آموزش هایمان یاری کنید.
با امید موفقیت و شادی برای شما دوست درسمنی عزیز
انجمن برنامه نویسان جاوا
نظرات دانشجویان
به نام پروردگار درود و توانا باشید. بسیار دوره عالی و مفیدی بود. باسپاس از استاد مهدی عباسی.
ممنونیم از شما بابت همراهیتون، موفق باشید.
سلام خواستم بدونم با یادگیری دوره پیشرفته چ پروژ های میتوان انجام داد و اینک بنده ب طور خودخوان دارم یاد میگیرم مشکلی هس؟
سلام محمد جان وقتتون بخیر، شما که الان در حال یادگیری دوره مقدماتی جاوا هستید، دارید مشاهده می کنید که استاد عباسی به صورت خیلی روان و ساده مفاهیم سخت و پیچیده جاوا را آموزش می دهند، به طوری که هیچ علامت سوالی در ذهن نمی ماند.
در دوره پیشرفته نیز مطمئن باشید کیفیت چندین برابر است و مطالب سخت و تخصصی برای شما بسیار و بسیار راحت تدریس شده است، در پایان دوره جاوا پیشرفته شما به عنوان یک متخصص جاوا می توانید ادعا کنید که تمامی مطالب جاوا را یاد گرفته اید و با قدرت می توانید وارد سایر شاخه های کاربردی جاوا شوید.
سلام و و خسته نباشین عالی بود فقط چرا وقتی مثلا رشته ها را توضیح میده کاربردشو نمیگه یا حداقل یه مثال نمیزنه که مثلا کجای برنامه یا اپ اسنا بدرد میخوره کلا اگه مثال بزنه که مثلا فلان جای اپ مورد استفااده قرارر میگره خیلی عالی میشه البته هیچ جا مثال نمیزنن ممنون
سلام پوریا جان وقتت بخیر، مهندس عباسی اتفاقا بسیار ریز میشن در مبحث ها و کامل توضیح میدهند حتما در درس های دیگر این را توضیح داده است.
سلام با تشکر از دوره مفیدتون،دوره پیشرفته جاوا آماده نشده؟ و اگر آماده نشده تا کی آماده میشه؟
سلام دوست عزیز وقتتون بخیر، فعلا مهندس در حال ضبط دوره پایگاه داده است سعی میکنیم حتما دوره جاوا پیشرفته را نیز منتشر کنیم. زمان دقیقی نمی توانم بگم ولی تمام تلاش خود را می کنیم تا هرچه زودتر دوره پیشرفته را خدمتتان ارائه کنیم.
سلام ممنون از دوره مقدماتی تون به این دلیل که واقعا مفاهیم را استاد خوبم مهدی عباسی نکته به نکته اموزش میدهند انشاالله به زودی دوره پیشرفته رو هم برای ما بزارید سپاس گزارم 🙏🙏
سلام خدمت شما، ممنونیم از شما به دلیل رضایتی که از دوره ما دارید، بله در تلاش هستیم تا دوره ها را پوشش بدهیم ولیکن به دلیل آنکه کیفیت دوره برای ما بسیار اهمیت دارد، برای همین روال کار یکم کند پیش می رود ولی مطمئن باشید دوره فوق العاده بینظیری را تجربه خواهید کرد، برای اطلاع رسانی از سایر دوره ها و تخفیف ها می توانید درسمن را در شبکه های اجتماعی دنبال کنید.
از همراهی شما متشکریم برای انتخاب درسمن برای متخصص شدن.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.