Java 异常处理
Java Exception Handlng
我正在尝试更好地理解异常处理。我已经阅读了我的书并用谷歌搜索了它,但是这段代码对我来说没有意义。在进入此代码块之前我理解的方式是,如果用户输入无效数字或 0,则 throw new ArithmeticException
将异常抛出到 catch 块,catch 块会处理它,然后执行继续正常进行。当我 运行 这段代码时, catch block
中的代码被执行,而不是 throw new ArithmeticException
代码。所以我的两个问题是,为什么 throw new ArithmeticException
代码也没有执行,以及为什么针对同一问题显示两条不同的错误消息...?
import java.util.Scanner;
public class App2 {
public static int quotient(int number1, int number2)
{
if (number2 == 0)
{
throw new ArithmeticException("divisor cannot be zero");
}
return number1 / number2;
}
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("enter two integers");
int number1 = input.nextInt();
int number2 = input.nextInt();
try
{
int result = quotient(number1, number2);
System.out.println(result);
}
catch (ArithmeticException ex)
{
System.out.println("exception: integer can't be divided by 0");
}
System.out.println("execution continues");
}
}
消息"divisor cannot be zero"
不显示只是因为抛出异常
如果 未 捕获到异常,您只会看到此消息。您会在堆栈跟踪(错误消息)中看到它。
如果你摆脱 try-catch 块然后尝试它,这就是你应该看到的:
Exception in thread "main" java.lang.ArithmeticException: divisor cannot be zero
您还可以删除以下代码:
catch (ArithmeticException ex)
{
System.out.println("exception: integer can't be divided by 0");
}
因为它已经在方法中表达并且会是多余的。不影响代码。只是让您知道,以防您想清理代码。
-曼尼
我正在尝试更好地理解异常处理。我已经阅读了我的书并用谷歌搜索了它,但是这段代码对我来说没有意义。在进入此代码块之前我理解的方式是,如果用户输入无效数字或 0,则 throw new ArithmeticException
将异常抛出到 catch 块,catch 块会处理它,然后执行继续正常进行。当我 运行 这段代码时, catch block
中的代码被执行,而不是 throw new ArithmeticException
代码。所以我的两个问题是,为什么 throw new ArithmeticException
代码也没有执行,以及为什么针对同一问题显示两条不同的错误消息...?
import java.util.Scanner;
public class App2 {
public static int quotient(int number1, int number2)
{
if (number2 == 0)
{
throw new ArithmeticException("divisor cannot be zero");
}
return number1 / number2;
}
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("enter two integers");
int number1 = input.nextInt();
int number2 = input.nextInt();
try
{
int result = quotient(number1, number2);
System.out.println(result);
}
catch (ArithmeticException ex)
{
System.out.println("exception: integer can't be divided by 0");
}
System.out.println("execution continues");
}
}
消息"divisor cannot be zero"
不显示只是因为抛出异常
如果 未 捕获到异常,您只会看到此消息。您会在堆栈跟踪(错误消息)中看到它。
如果你摆脱 try-catch 块然后尝试它,这就是你应该看到的:
Exception in thread "main" java.lang.ArithmeticException: divisor cannot be zero
您还可以删除以下代码:
catch (ArithmeticException ex)
{
System.out.println("exception: integer can't be divided by 0");
}
因为它已经在方法中表达并且会是多余的。不影响代码。只是让您知道,以防您想清理代码。
-曼尼