Discussion:
[問題] Exception
(时间太久无法回复)
arctanx
2007-04-14 16:23:53 UTC
Permalink
這是課本上寫的
public class Ex2
{
public static void main(String[] arg)
{
int a=10,b=0,c;
try
{
c=a/b;
}
catch(Exception e)
{
System.out.println(e.toString());
}
finally
{
System.out.println("這裡一定會被執行");
}
}
}

後來自己寫一個簡單的
public class Ex1
{
public static void main(String[] arg)
{
double a,b,c=0;
a=Double.parseDouble(arg[0]);
b=Double.parseDouble(arg[1]);
try{
c=a/b;
}
catch(Exception e)
{
System.out.println(e.toString());
}
finally
{
}
//System.out.println("c="+c);
}
}

結果跟我想的不太一樣
我本來想說java Ex1 2 0
希望得到e.toString() 的error message
結果一個東西都沒有XD
我看課本寫說
當他執行偵測錯誤try block 那裡面的statement
當執行到錯誤就會跳到對應的catch裡面
難道說 他沒掉到我的catch裡面嘛?
可是當註解拿掉
卻又跑出c=Infinity
請問這是什麼原因阿?
先謝摟~

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.169.116.152
m...
2007-04-15 00:36:11 UTC
Permalink
※ 引述《tanx (arctanx)》之銘言:
: 這是課本上寫的
[...]
: int a=10,b=0,c;
: try
: {
: c=a/b;
: }
: catch(Exception e)
: {
: System.out.println(e.toString());
: }
[...]
: 後來自己寫一個簡單的
[...]
: double a,b,c=0;
: a=Double.parseDouble(arg[0]);
: b=Double.parseDouble(arg[1]);
: try{
: c=a/b;
: }
: catch(Exception e)
: {
: System.out.println(e.toString());
: }
[...]
: //System.out.println("c="+c);
[...]
: 結果跟我想的不太一樣
: 我本來想說java Ex1 2 0
: 希望得到e.toString() 的error message
: 結果一個東西都沒有XD
: 我看課本寫說
: 當他執行偵測錯誤try block 那裡面的statement
: 當執行到錯誤就會跳到對應的catch裡面
: 難道說 他沒掉到我的catch裡面嘛?

  是的。

: 可是當註解拿掉
: 卻又跑出c=Infinity
: 請問這是什麼原因阿?

  整數除法遇到分母為零時會丟出 java.lang.ArithmeticException,
  但浮點數除法則不會,
  因為浮點數可以表示該運算結果,
  也就是你印出 c 值時看到的無限大 (Infinity)。

: 先謝摟~

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.175.159.61

Loading...