کانال بازی سازی تلگرام
مدیریت خطا یا پرتاب خطا با دستور Throw در جاوا (مدیریت exception یا استثنا یا خطا در java) :: آموزش ساخت بازی اندروید+پکیج های تخصصی

آموزش ساخت بازی اندروید+پکیج های تخصصی

در گیم اور، همیشه حق با مشتری است و در صورت نارضایی با هم به توافق می رسیم.
--
تمام اعمالی که انجام می دهیم، حتی اگر ذره ای و مثقالی باشد، به خودمان باز می گردد و بازتابش آنها را در زندگی خواهیم دید. زلزال ۷
او کسی است که (روح) شما را در شب (به هنگام خواب) میگیرد; و از آنچه در روز کرده ‏اید، با خبر است; سپس در روز شما را (از خواب) برمیانگیزد; و (این وضع همچنان ادامه مییابد) تا سرآمد معینی فرا رسد; سپس بازگشت شما به سوی اوست; و سپس شما را از آنچه عمل میکردید، با خبر میسازد. انعام ۶۰
دلها به یاد خدا آرام میگیرد. رعد آیه ۲۷
بدانید زندگی دنیا تنها بازی و سرگرمی، و تجمل پرستی و تفاخر در میان شما و افزون طلبی در اموال و فرزندان است . حدید آیه ۲۰
آن خدایی که آدمی را از خون بسته (که تحول نطفه است) بیافرید.
بخوان و (بدان که) پروردگار تو کریم‌ترین کریمان عالم است.
آن خدایی که بشر را علم نوشتن به قلم آموخت.
به آدمی آنچه را که نمی‌دانست تعلیم داد.
راستی که انسان سرکش و مغرور می‌شود.
چون که خود را در غنا و دارایی ببیند. علق ۲- ۷
این زندگانی چند روزه دنیا افسوس و بازیچه‌ای بیش نیست، عنکبوت ۶۴
در روی زمین به تکبر راه مرو که نمی توانی زمین را بشکافی و هرگز قامتت به بلندای کوهها نمی رسد. اسراء ۳۷
در آنچه خداوند بر تو بخشیده است، سرای آخرت را بجوی و سهم خود را از دنیا فراموش مکن و همانگونه که خدا به تو نیکی کرده است نیکی کن و هرگز فساد در زمین منما که خدا مفسدان را دوست ندارد. قصص ۷۷
و هرگاه نعمت و رحمتی به انسان بچشانیم و سپس آن را از او برگیریم او مأیوس و نومید میشود و به کفران و ناسپاسی بر میخیزد. هود ۹
بندگان مرا آگاه ساز که من بسیار آمرزنده و مهربانم. حجر ۴۹
از رحمت خدا نا امید مباشید که جز کافر هیچ کس از رحمت خدا نا امید نیست. یوسف ۸۷
پس به یاد من باشید تا به یاد شما باشم. بقره ۱۵۲
زندگانی دنیا چیزی جز متاع فریبنده نیست . آل عمران ۱۸۵
از آنچه به شما روزی داده ایم پیش از آنکه روزی فرا رسد که نه معامله ای وجود دارد و نه دوستی و شفاعت ، انفاق کنید. بقره ٢۴۵
بسا چیزی را ناخوش داشته باشید که آن به سود شماست و بسا چیزی را دوست داشته باشید که به زیان شماست، و خدا میداند و شما نمیدانید. بقره ۲۱۶
ما آیات (خود) را برای شما بیان کردیم شاید اندیشه کنید...حدید ۱۷

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

 منبع :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="">
تجدید کد امنیتی