java初級--異常類

所謂異常類就是程序在運行時可能出現的一些錯誤,比如試圖打開一個根本不存在的文件,異常處理將會改變程序的控制流程,讓程序有機會對錯誤進行處理。

當程序運行出現異常時,Java運行環境就用異常類Exception的相應子類創建一個異常對象,並等待處理,java使用try-catch語句來處理異常,將可能出現的異常操作放在try-catch語句的try部分,當try部分的某個語句發生異常後,try部分將立刻結束執行,而轉向執行相應的catch部分,所以程序可以將發生異常後的處理放在catch部分。try-catch的catch語句可以由幾個catch組成,分別處理髮生的異常。


public class example14
{
 public static void main(String args[])
{
 int n=0,m=0,t=555;
try
{
  m=Integer.parseInt("8888");
  n=Integer.parseInt("avc123");
  t=9999;
}
  catch (NumberFormatException e)
{
  System.out.println("發生異常:"+e.getMessage());
  e.printStackTrace();
  n=123;
}
System.out.println("n="+n+",m="+m+",t="+t);
}
}
xiongyao@xiongyao-Lenovo:~/java編程$ javac example14.java
xiongyao@xiongyao-Lenovo:~/java編程$ java example14
發生異常:For input string: "avc123"
java.lang.NumberFormatException: For input string: "avc123"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at example14.main(example14.java:9)
n=123,m=8888,t=555

2:自定義異常類

在程序中也可以擴展Exception類定義自己的異常類,然後規定那些方法產生這樣的異常。一個方法在聲明時

可以使用throws關鍵字聲明要產生的若干個異常,並在該方法體中給出產生異常的操作,即用相應的異常類創建對象,並使用

thorw關鍵字拋出該異常對象


下面爲計算最大公約數方法:


class NopositiveException extends Exception
{
 String message;
NopositiveException(int m,int n)   //自定義一個異常類
 
{
 message="數字"+m+"或"+n+"不是正整數";
}
public String toString()
{
 return  message;
}
}
class Computer
{
  public int getMaxCommandDivisor(int m,int n) throws NopositiveException
 {
  if(n<=0 || m<=0)
{
  NopositiveException  exception=new NopositiveException(m,n);
  throw  exception;  //拋出異常,結束方法的執行
}
if(m<n)
{
 int temp=0;
  temp=m;
   m=n;
   n=temp;
}
int r=m%n;
while(r!=0)
{
  m=n;
  n=r;
  r=m%n;
}
return n;
}
}
public class example15
{
  public static void main(String args[])
{
 int m=24,n=36,result=0;
 Computer a=new Computer();
try {
  result=a.getMaxCommandDivisor(m,n);
 System.out.println(m+"和"+n+"的最大公約數"+result);
 m=-12;
 n=22;
result=a.getMaxCommandDivisor(m,n);
System.out.println(m+"和"+n+"的最大公約數"+result);
}
catch (NopositiveException e)
{
 System.out.println(e.toString());
}
}
}

xiongyao@xiongyao-Lenovo:~/java編程$ javac example15.java
xiongyao@xiongyao-Lenovo:~/java編程$ java example15
24和36的最大公約數12
數字-12或22不是正整數


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章