Javaの例外処理が分からん

omochistが,Javaで例外処理の勉強をしていますが,どうもつまずいた模様です.親切な人は,教えてくれると嬉しいので,是非コメントをお願いします.
昨日書いた,JSPのソースの,

if(p2 == 0){
	out.println("割る数がおかしいYO.");
} else {
	float s = (float)p1 / (float)p2;
	out.println(p1 + "/" + p2 + "=" + s);
}

の部分で,Javaに詳しい友達に,例外を受け取って処理したら?と言われたので,ちょっとwebでJavaの例外を学び,実際に「あくまでも文法に忠実に」やってみた.

try {
	float s = (float)p1 / (float)p2; // 予定では,ココで例外がスローされる.
	out.println(p1 + "/" + p2 + "=" + s);
} catch (ArithmeticException e) {
	out.println("割る数がおかしいYO");
}

まぁこんな感じで動くだろう.と思いながら,実行して見ると,

3/0=Infinity

と,なんとも「ごもっとも」な答えが返ってきた.


おっかし〜な〜と思いながら,webで例外を吐かれてた,intにしてみる.

try {
	int s = p1 / p2; // 予定では,ココで例外がスローされる.
	out.println(p1 + "/" + p2 + "=" + s);
} catch (ArithmeticException e) {
	out.println("割る数がおかしいYO");
}

としてみると,ちゃんとArithmeticExceptionで例外が飛んでいた.なんと,intなら飛んでfloatなら飛ばないんですか.


いっそ,例外とかどっかに放ってみる.

float s = (float)p1 / (float)p2;

としてみると,

3/0=Infinity

あぁ,そうですか.結局,floatだと0で割っても例外が吐かれないのね.不思議だ.