«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
مدیریت خطا یا پرتاب خطا با دستور Throw در جاوا (مدیریت exception یا استثنا یا خطا در java) :: گیم اور

گیم اور


خصوصی نظر نذارید نمی تونیم جواب بدیم.

عضو کانال تلگرام ما بشید توش گروه هم می گیم

لینک کانال خصوصی گیم اور :

https://t.me/gameoverblog

پیوندهای روزانه
پیوندها

 منبع :gameover.blog.ir


ما توی basic4android یا بعضی زبونا یه چیز داریم به نام Exception یا همون "استثنا"ی خودمون. از این استثنا با نام خلاصه ی e هم توی سیشارپ یا بعضی زبون ها و حتی گاهی جاوا استفاده می شه.


توی vb6 (ویژوال بیسیک شش) دستوری داشتیم تحت عنوان on error resume next که می گفت اگه خطا داشتیم محل نذار برو دستور خط بعدی رو اجرا کن. یا دستوری داشتیم به اسم on error goto labelName که می گفتیم اگه خطایی داد برو به برچسبی که معرفی کردیم.

و اما throw یعنی چی؟ throw از لحاظ لغوی به معنی پرتاب هست. اما چه ربطی به بحث ما داره ؟

حتما دیدید همیشه می گن java بهترین زبون هست و از لحاظ امنیت حرف اول رو می زنه(وارد مبحث python نشید فعلا).یکی از دلایل اینکه جاوا امنیتی بسیار خوبی داره همینه که با استفاده از دستور throw می تونیم مدیریت خطا کنیم و دیگه نذاریم خطای رخ داده سیگنالش به کامپایلر یا مفسر برسه. می یایم به دستور throw خطاهای رخ داده رو پرتاب می کنیم به یه سمت دیگه. یا در اصطلاح پاس می دیم به بخشی داخل کدهای خودمون و این خطا رو می یایم تجزیه تحلیل می کنیم(با دستورات و توابع یا متدهای تعریف شده ی زبون جاوا).

ما خطاهای مختلفی داریم و برای مدیریت خطاهای مختلف کلاس های خاص وجود داره . مثلا IOException برای مدیریت استثنا(خطا)های ورودی خروجی هست.(دستوارت try catch هم داریم اینجا بحث نمی کنم)

مثال :
کد PHP:
//A void method
public void sample()
{
   
//Statements
   //if (somethingWrong) then
   
IOException e = new IOException();
   throw 
e;
   
//More Statements
 

در کد فوق ما متغیری به اسم e از نوع IOEception ایجاد کردیم و با دستور new حافظه ای به فرمت و قالب و ساختار نوع اون کلاس بهش اختصاص دادیم.

سپس دستور throw e خودش خودکار به کامپایلر دستور می ده اگه خطایی رخ داد به خروجی نبر ، پرتش کن توی جایی از حافظه که به متغیر e اختصاص دادیم. توی کدها هم می تونیم این e رو مدیریت کنیم مثلا e بذاریم بعدش نقطه بذاریم و ببینیم چیا داره.مثل کد خطا،مثل متن خطا،سطر و ستونی که خطا رخ داده و ... .

مثال دیگه با دستور try catch:

کد PHP:
class ThrowDemo{
   public static 
void main(String args[]){
      try{
       
char array[] = {'a','b','g','j'};
       
/*I'm displaying the value which does not
        * exist so this should throw an exception
        */
       
System.out.println(array[78]);
      }catch(
ArithmeticException e){
        
System.out.println("Arithmetic Exception!!");
       }
   }

خروجی:
کد:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
78 at beginnersbook.com.ThrowDemo.main(Details.java:9)

مثال دیگه از throw exception

کد PHP:
package beginnersbook.com;
class 
MyOwnException extends Exception {
   public 
MyOwnException(String msg){
      
super(msg);
   }
}

class 
EmployeeTest {
   static 
void  employeeAge(int agethrows MyOwnException{
      if(
age 0)
         throw new 
MyOwnException("Age can't be less than zero");
      else
         
System.out.println("Input is valid!!");
   }
   public static 
void main(String[] args) {
       try {
            
employeeAge(-2);
       }
       catch (
MyOwnException e) {
            
e.printStackTrace();
       }
   }

خروجی:
کد:
beginnersbook.com.MyOwnException: Age can't be less than zero


مثالی از throw های تو در تو:
کد PHP:
package beginnersbook.com;
class 
Exception2{
   static 
int sum(int num1int num2){
      if (
num1 == 0)
         throw new 
ArithmeticException("First parameter is not valid");
      else
         
System.out.println("Both parameters are correct!!");
      return 
num1+num2;
   }
   public static 
void main(String args[]){
      
int res=sum(0,12);
      
System.out.println(res);
      
System.out.println("Continue Next statements");
   }

خروجی:

کد:
Exception in thread main java.lang.ArithmeticException: First parameter is not valid


منبع:
http://beginnersbook.com/2013/04/throw-in-java/
موافقین ۰ مخالفین ۰ ۹۴/۰۶/۰۳
مدیرکل

نظرات (۱)

خوب

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی