• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      如何處理Java程序中的錯誤

      2010-08-15 00:52:09高榮芳
      陜西開放大學(xué)學(xué)報 2010年2期
      關(guān)鍵詞:程序段支撐架聲明

      高榮芳

      (波鴻大學(xué)數(shù)學(xué)系,德國 波鴻 44801)

      【理工園地】

      如何處理Java程序中的錯誤

      高榮芳

      (波鴻大學(xué)數(shù)學(xué)系,德國 波鴻 44801)

      編寫Java程序時,不可避免的會出現(xiàn)這樣或那樣的錯誤。本文介紹處理和修改Java程序的方法和技巧,并著重對“try-程序段”和“catch-程序段”的應(yīng)用作了詳細的闡述。

      Java;Java程序;try-程序段;catch-程序段

      Java程序的編寫,對于學(xué)計算機語言的專業(yè)人員而言并不是一件很難的事情,但是在編寫程序的過程中,經(jīng)常會出現(xiàn)這樣或那樣的錯誤,譬如:第一類情況,程序編寫雖然正確,但計算機并不執(zhí)行命令。第二類情況,程序在執(zhí)行的過程中自行中斷或不出結(jié)果。第三類情況,程序在執(zhí)行過程中輸出錯誤的結(jié)果等。所以,尋找一個程序的錯誤所在處和錯誤的原因所在以及如何處理、解決程序中的問題就顯得比較重要,但這并不是件容易的事情,尤其在規(guī)模較大、篇幅較長的大型程序中。

      下面主要介紹怎樣尋找一個程序中的錯誤以及消掉錯誤的基本方法。

      一、錯誤的基本類型

      總體上來說,在一個Java程序的編寫過程中,所在可能會出現(xiàn)的問題大致可分為兩大類,即:Exception和Error。

      Exception,是一種普通的錯誤,它是可以被程序檢控的;Error是一異常的錯誤,它是不可以被程序檢控的,也是不應(yīng)該出現(xiàn)的。下面依據(jù)具體例題詳細解釋之。

      例1

      class Ex01{

      public static void main(String[]args){

      int tastenCode;

      tastenCode=System.in.read();

      System.out.println(tastenCode);

      }

      }

      雖然這個程序看起來是完全正確的,但是計算機在編輯的過程中給出了錯誤的聲明:

      Ex01.java:4:unreported exception java.io.IOException;must be

      caught or declared to be thrown

      tastenCode=System.in.read();

      導(dǎo)致這個程序錯誤的原因在于方法read的聲明,也就是說,一個錯誤可能直接或間接的在方法read內(nèi)出現(xiàn)。這是一種在輸入操作或輸出操作時出現(xiàn)的錯誤,例如:由于輸入了錯誤的數(shù)據(jù),或者是意想不到的問題發(fā)生,象例1,等等。不過這些問題都是可以被檢控的。

      例2:

      class Ex02{

      public static void main(String[]args){

      String s1="24",s2="25",s3="x";

      //(1)

      int number1,number 2,number 3;

      number1=Integer.parseInt(s1);

      //(2)

      number2=Integer.parseInt(s2);

      number3=Integer.parseInt(s3);

      }

      }

      仔細觀察一下我們的程序:

      在程序里的(1)處我們定義了三個符號串,他們的類型(Typ)是數(shù)字串(String),可是在它們中只有兩個定義的是數(shù)字串。

      再看程序里的(2)處,在符號串中S1,S2將被輸出,可是成功的前提是:所有符號串都必須由數(shù)字組成,而不是象在S3中定義了一個變量。這也就是導(dǎo)致程序錯誤的原因。

      例3:

      //file:account.java

      public class Account{

      private int accountnumber;

      private double balance;

      public Account(){}

      public Account(int accountnumber){

      this.accountnumber=accountnumber;

      }

      public Account(int accountnumber,double balance)

      throws AccountException{

      if(blance<0)

      throws new AccountException("Negative Blance:"+blance);

      this.accountnumber=accountnumber;

      this.balance=blance;

      }

      public int getAccountnumber(){

      限幅機構(gòu)主支撐架擬選取的材料為LW-2改性聚酯亞胺,該材料的抗拉強度為145 MPa,屈服強度為89 MPa。由圖8可知,在該仿真負載下,主支撐架的最大位移量為0.47 μm,最大應(yīng)力為2.44 MPa,即在300 N橫向負載的作用下,限幅機構(gòu)主支撐架具有較大的靜力裕度,滿足強度和剛度要求。

      return accountnumber;

      }

      public void setAccountnumber(int nr){

      accountnumber=nr;

      }

      public double getBlance(){

      return blance;

      }

      public void setBlance(double amount)throws AccountException{

      if(amount<0)

      throw new AccountException("Negative Blance:"+amount);

      blance=amount;

      }

      public void numberIn(double amount)throws AccountException{

      if(amount<0)

      throw new AccountException("Negative Amount:"+amount);

      blance+=amount;

      }

      public void numberOut(double amount)throws AccountException{

      if(amount<0)

      throw new AccountException("Negative Amount:"+amount);

      if(balance<amount)

      throw new AccountException("A-mount>Blance")

      blance-=amount;

      }

      }

      //file:Test.java

      public class Test{

      public static void main(String[]args)throw AccountException{

      Account acc=new Account(4711,500);

      acc.numberOut(1000);

      System.out.println(acc.getBlance());

      }

      }

      這個程序在執(zhí)行中自行中斷,計算機給出了以下聲明:

      Exception in thread“main”AccountException

      Amount>balance

      導(dǎo)致計算機在編輯過程中錯誤聲明的原因是:throws-clause的不完善。

      二、錯誤的處理與修改

      例1的修改方案較簡單,這里略去。

      修改以后的例2的新程序如下:

      class Ex02’{

      public static void main(String[]args){

      String s1="24",s2="25",s3="x";

      int number1,number2,number3;

      number1=number2=number3=0;

      try{

      //(1)

      number1=Integer.parseInt(s1);

      number2=Integer.parseInt(s2);

      number3=Integer.parseInt(s3);

      }

      catch(

      java.lang.NumberFormatException e){ //(2)

      System.out.println("Uups");

      //(3)

      }

      System.out.println(number 1*number 2);

      System.out.println(number 1+number 3);

      }

      }

      輸出結(jié)果為:

      Uusp

      600

      24

      詳細解釋如下:

      (1)在新程序中,關(guān)鍵詞try引導(dǎo)了一個程序段,它被限定在一對花括號之內(nèi)。這個程序段確定了程序的范圍。

      (2)由于在(1)處我們定義了一個try-程序段,那么按照J(rèn)ava的規(guī)則,我們必須緊接著在這個try-程序段的后邊最少定義一個catch-程序段,而且在catch-程序段內(nèi)定義的程序指示命令是針對一定類型錯誤的。根據(jù)例2的具體情況,我們在修改此程序時只定義了一個catch-程序段,在這個catch-程序段中我們給出了一個參量e,它就是針對錯誤的對象而給出的。通過說明,不僅參量的類型被聲明了,而且確定了這個程序段負責(zé)處理怎樣的錯誤。

      (3)每個有效的Java-code都可以存在在一個catch-程序段內(nèi),通過此種途徑和方法,編程序的人可以嘗試著將錯誤消除。

      例3修改方案有好幾種,這里我們僅介紹一種。

      修改以后的例3新程序為:

      //file:account.java

      public class Account{

      private int accountnumber;

      private double balance;

      public Account(){}

      public Account(int accountnumber){

      this.accountnumber=accountnumber;

      }

      public Account(int accountnumber,double balance)

      throws AccountException{

      if(blance<0)

      throws new AccountException("Negative Blance:"+blance);

      this.accountnumber=accountnumber;

      this.balance=blance;

      }

      public int getAccountnumber(){

      return accountnumber;

      }

      public void setAccountnumber(int nr){

      accountnumber=nr;

      }

      public double getBlance(){

      return blance;

      }

      public void setBlance(double amount)throws AccountException{

      if(amount<0)

      throw new AccountException("Negative Blance:"+amount);

      blance=amount;

      }

      public void numberIn(double amount)throws AccountException{

      if(amount<0)

      throw new AccountException("Negative Amount:"+amount);

      blance+=amount;

      }

      public void numberOut(double amount)throws AccountException{

      if(amount<0)

      throw new AccountException("Negative Amount:"+amount);

      if(balance<amount)

      throw new AccountException("A-mount>Blance")

      blance-=amount;

      }

      }

      //file:Test.java

      public class Test{

      public static void main(String[]args){

      Account acc=zero;

      try{

      acc=new Account(4711,500);

      //(1)

      for(int i=0;i<3;i++){

      System.out.println("BEGINN STEP"+i);

      try{

      //(2)

      switch(i){

      case 0:

      acc.numberOut(100);

      break;

      case 1:

      acc.numberOut(700);

      break;

      case 2:

      acc.numberOut(200/0);

      break;

      }

      }

      catch(accountException e){

      //(3)

      System.out.println("Error:"+e.getMessage());

      }

      finally{

      System.out.println("Issue in finally-block:"

      +acc.getBalance());

      }

      System.out println("END STEP"+i);

      System.out println();

      }

      }

      catch(accountException e){

      //(4)

      System.out println(e.getMessage());

      }

      }

      }

      具體說明如下:

      在例3程序(Test部分)的修改過程中,我們利用了try—程序段和catch—程序段,他們的作用這里不再贅述,不同前邊例2的修改方法是,它們是互相套在一起的。

      詳細解釋如下:

      catch—程序段(4)是和try—程序段(1)配對的,catch—程序段(3)是和try—程序段(2)配對的,而try—程序段(2)和catch—程序段(3)這一對是鑲嵌在try—程序段(1)和catch—程序段(4)這一對里面的。

      我們在修改例3這個程序時利用了Java的一個優(yōu)點,即:在一個成套的try—程序段和catch—程序段內(nèi)允許完整組合的try—程序段和catch—程序段套在里邊應(yīng)用。這是修改Java—程序必不可少的技巧。

      另外,在一個try—程序段內(nèi)允許完整組合的try—程序段和catch—程序段套在里邊應(yīng)用。同樣,在一個catch—程序段內(nèi)也允許完整組合的try—程序段和catch—程序段套在里邊應(yīng)用。要注意的原則是,有try—程序段的出現(xiàn),就有catch—程序段的出現(xiàn),而且一個try—程序段可以引導(dǎo)多個catch—程序段。也就是說,在一個try—程序段的后邊可以跟隨多于一個以上catch—程序段。那么,到底多少為宜,要根據(jù)具體情況以及程序的需要而確定。

      Literatur(參考文獻):

      [1]Dirk Louis.Jetzt lerne ich Java[M].Germany:vieweg,2001.

      [2]Christian Welff.Einfuerung in Java[M].Germany:Teubner,1999.

      [3]Gao Rong Fang(高榮芳).Grundkurs Java[M].Germany:Script,2002.

      [責(zé)任編輯 王愛萍]

      TP311

      A

      1008-4649(2010)02-0092-07

      2009-11-25

      高榮芳(1958— ),女,西安市人,德國波鴻大學(xué)教授,數(shù)學(xué)博士。

      猜你喜歡
      程序段支撐架聲明
      本刊聲明
      本刊聲明
      中國德育(2022年12期)2022-08-22 06:16:46
      基于WinCC的物料小車控制系統(tǒng)設(shè)計與仿真
      電動工具(2022年2期)2022-05-18 08:40:38
      一種便于刮料的橡膠開煉機
      擴散塔模板及支撐架施工淺析
      數(shù)控系統(tǒng)手輪回退功能的研究與實現(xiàn)*
      本刊聲明
      本刊聲明
      基于NC程序段的提高數(shù)控加工監(jiān)控閾值與信號同步的方法*
      一種塑料板周邊拋光機
      鄂托克旗| 隆回县| 万年县| 辽阳市| 广水市| 荔波县| 玉溪市| 和静县| 兰坪| 蒙自县| 伊宁市| 吐鲁番市| 海安县| 普格县| 鲜城| 金阳县| 冷水江市| 清徐县| 五常市| 凌源市| 蛟河市| 蓬安县| 繁峙县| 蒲江县| 宁海县| 肇源县| 凉山| 望都县| 米易县| 朝阳区| 大宁县| 名山县| 哈尔滨市| 铁岭县| 桃园县| 英吉沙县| 得荣县| 辽宁省| 大化| 乌兰浩特市| 潜山县|