در این جلسه با مبحث برخورد با استثناها در ادامه جلسه قبل آشنا میشوید.
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);
}
}
}
دوست درسمنی عزیز، امیدواریم از این آموزش رایگان لذت برده باشید.
برای یادگیری این مبحث می توانید این درس را دانلود کنید و از فایل ها و ویدئو این بخش استفاده کنید.
شما عزیزان می توانید سوالات خود را در بخش انجمن پرسش و پاسخ مطرح کنید و همچنین منتظر انتقادات و پیشنهادات مفید شما در بخش نظرات هستیم تا ما را در کیفیت بهتر آموزش هایمان یاری کنید.
با امید موفقیت و شادی برای شما دوست درسمنی عزیز
سلام سلام خیلی متشکریم از شما، امیدواریم روز به روز بدرخشید و افتخار کنیم به داشتن دانشجویانی همانند شما.
پیروز و سربلند باشید.
سلام امیر جان، بله انشاالله در آینده نزدیک این دوره نیز ضبط خواهد شد و در درسترس قرار می گیرد.
پیروز باشید.
برای پاسخ باید وارد شوید
سلام خدمت شما، ممنونیم از شما به دلیل رضایتی که از دوره ما دارید، بله در تلاش هستیم تا دوره ها را پوشش بدهیم ولیکن به دلیل آنکه کیفیت دوره برای ما بسیار اهمیت دارد، برای همین روال کار یکم کند پیش می رود ولی مطمئن باشید دوره فوق العاده بینظیری را تجربه خواهید کرد، برای اطلاع رسانی از سایر دوره ها و تخفیف ها می توانید درسمن را در شبکه های اجتماعی دنبال کنید.
از همراهی شما متشکریم برای انتخاب درسمن برای متخصص شدن.